最近遇到这样几句代码:
short (*table)[2];
table = (short (*)[2])malloc(size * count);
顿时感觉应该和 short *table[2] 肯定不是同一类东东。经过查证,这是一个指向二维数组的指针。
int a[4][2]; int (*p)[2] = a; //每行两个元素的数组,即 n 行 2列的二维数组; int i,j; for(i = 0; i< 4; i++) for(j = 0; j<2; j++) printf("a[x][y] = %d", p[x][y]);
所以不难理解之前的代码了吧~
由此可见,使用malloc 动态分配内存时,不仅仅只能是一维数组,也可以是二维的(int (*)[3]),甚至更高维数的~