int a[][3]={{0,1},{2,3},{4,5}};
int *p;
p=a;
其输出是报警告
warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
这里的a是行地址a+1则加了8个字节,而p如果+1才加4个字节
如果可以用以下代码
#include <stdio.h>
int main()
{
int a[][3]={{0,1},{2,3},{4,5}};
int (*p)[3];
p=a; //p=&a[0];
printf("p[1][1]=%d\n",p[1][1]);
printf("p[0][1]=%d\n",(*p)[0]);
}
结果
p[1][1]=3
p[0][1]=0
这篇博客探讨了C语言中关于指针和数组的使用,特别是当将指针赋值为二维数组时出现的类型不匹配警告。作者通过示例代码解释了指针如何在内存中移动,以及不同类型的指针增加操作的字节数差异。文章还提供了一个修正后的代码示例,展示了正确地使用指针访问二维数组的方法,并给出了运行结果。
1089

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



