如何将二维数组分配给**指针?

时间:2012-04-15 20:07:56

标签: c++ arrays pointers

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

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

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

2 个答案:

答案 0 :(得分:17)

声明指针如下:

int (*pointer)[3] = array;

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

答案 1 :(得分:6)

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

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

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