int (*a)[10] 和 int(**a)[10] 有什么区别 请高手具体解释一下

对于int (*a)[10],a++指向哪里,对于int(**a)[10],a++指向哪里

int (*a)[10]说明指针a是一个指向有10个int类型数组的指针, int(**a)[10]说明a是指向一个有10个int类型的数组的指针的指针, 可以看下下面的例子:
#include <stdio.h>

void main()
{
int b[2][3] = {{1, 2, 3}, {4, 5, 6}};
int (*c)[3] = b;
int(**a)[3];

a = &c;
}

c指向了b, b[i]中的每个元素都是一个指向3个int类型的指针, 所以c++就指向了b[1],也就是元素4的地址。
a又指向了c, a++的指向就无从所知了...
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-03-29
int (*a)[10],a是指向数组的指针,a++指向数组的第二个元素。
int(**a)[10],a是指向指针数组的指针,a++指向指针数组的第二个元素(也是指向指针的指针)。
相似回答