int (*p)[4];意义是定义一个指针,指向4个int大小的空间。而非定义一个4个int*的数组。所以*p++一次偏移16个字节。
int main()
{
int (*pp)[4];
int xx[6][4] ={0};
pp = xx;
printf("%x\n" , &xx[0][0] );
printf("%x\n" , &xx[2][0] );
printf("%p\n" , *(pp+2));
}
结果输出如下:
bf856be0
bf856c00
0xbf856c00
若改为int (*p)[5]则p++偏移20个字节,且不会出错
若改为int *p[4];则表示定义一个指针数组。
本文深入探讨了C/C++中指针与数组的关系,特别是如何使用指针访问二维数组的不同元素,以及指针偏移量的计算原理。通过具体代码示例,解释了不同类型的指针变量在内存中的行为差异。
1567

被折叠的 条评论
为什么被折叠?



