6

如何将二维数组分配给**指针?这就是我想做的想法

int arrray [2][3];
int **pointer = array;
so pointer[0][1]= 1;

所以有什么帮助吗?提前致谢

4

2 回答 2

19

像这样声明指针:

int (*pointer)[3] = array;

但这在 C++ 中是非常讨厌的。如果您解释了您的一般目的,也许您可​​以找到更好的解决方案(涉及向量和诸如此类的解决方案)。

于 2012-04-15T20:09:55.470 回答
7

简单的答案是你不能。二维数组是保存每一行的连续内存块,而指向指针的指针可以引用指向包含整数的不同内存位置的指针所在的内存位置。

另一方面,您可以创建一个单独的数据结构,以您想要的方式保存指向元素的指针(即创建一个指针数组,将这些指针初始化为每行的开头,并使用指向该指针数组的指针as pointer),但它根本没有用,反而会使一切不必要地复杂化。

这个问题可能来自普遍的误解,即数组和指针是相同的,而事实并非如此。数组可以衰减为指向数组第一个元素的指针(并且会经常这样做),但该指针的类型是第一个元素的类型。在二维数组中,第一个元素的类型是内部数组,而不是基本元素类型。

于 2012-04-15T20:15:37.610 回答