指向恒定大小2D阵列中的1D阵列的指针

时间:2012-09-03 15:37:43

标签: c pointers

我有一个常量大小的二维整数数组,我将其声明为

int array[SIZE_1][SIZE_2];

我想声明一个指针p,以便我可以为它分配一个二维数组的“行”,即

p = array[index];

我尝试将p声明为

int (* p)[SIZE_2];

但是这给了我一个"assignment from incompatible pointer type"警告(关于MinGW的GCC)。

那么如何正确声明p

2 个答案:

答案 0 :(得分:3)

你指向一个整数数组(Row): -

 int *p = array[index];
 so,
 p[1] == array[index][1]; 

这也有效: -

int array[SIZE_1][SIZE_2];
int (*p)[SIZE_2] = array;

答案 1 :(得分:0)

如果你想要一个指向特定大小的数组的指针,你可以使用......像这样:

....
typedef int AOFSIZE[SIZE_2];      // one row

int Array[SIZE_1][SIZE_2];        // our array
int rowindex = 1;                 // any row available
AOFSIZE *ptr = &Array[rowindex];
...

但这只是在某些情况下才使用。

此致

RBO