【发布时间】:2011-10-01 11:50:45
【问题描述】:
全部。我的 C++ 教授向我提出了一个有趣的问题。显然,它也用于一些编程工作面试。
情况是这样的。我有一个 int 的二维数组(矩阵):
int array1[][2] = {{11, 12}, {21, 22}};
我想创建第二个二维数组 array2,它指向第一个数组。也就是说,它们会占用相同的内存空间。
显而易见的解决方案是使用指针。所以,我这样声明array2:
int (*array2)[2][2];
array2 = &array1;
这似乎有效。现在,这就是问题所在。我试图从 array1 中减去 11,但是通过引用 array2 来做到这一点。这是我要完成的代码:
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
// Trying to do the equivalent of this:
array1[i][j] -= 11;
}
}
我在内部for循环的主体中尝试了以下内容,但均未成功:
// Second row not affected
*(array2[i][j]) -= 11;
// Second row not affected
*(*(array2[i]) + j) -= 11;
// incompatible types in assignment of `int' to `int[2]'
*( *(array2 + i) + j) -= 11;
有什么想法吗?我怀疑有些简单的事情我只是没有说到这里。
谢谢!
【问题讨论】:
标签: c++ pointers multidimensional-array