c语言中error C2440: '=' : cannot convert from 'int [5][6]' to 'int *'
# include <stdio.h> int main(void) { int a[5][6]; int m,n; int i = 10; int *p; for (m = 0;m<5;m++) { for (n = 0;n<6;n++) { a[m][n] = i; i++; } } p=&a[0][0]; for (m = 0;m<5;m++) { for (n=0;n<6;n++) { printf("a[%d][%d]=%d ",m,n,*(p+(5*m)+n)); } printf("\n"); } return 0; } 把下面p=&a[0][0];换为p = a;就么问题,什么原因 说错了,把p = a 换成 p = &a[0][0];就没问题 这是什么原因,a不是代表数组的首地址么? 求解释?
最新回答
酒色清浅
2025-06-18 11:23:01
呃,楼主."p = a;"这语句是不合法的,两个类型相同的指针才能进行赋值的.
a是二维数组指针常量,p是一维指针,类型明显不一样嘛...
如果要使"p = a;"这语句合法,那么应该这样定义p:
int (*p)[6]; //看声明先看变量名,然后由右往左看.如果遇到括号则先看括号里的.所以这声明是说:p是个指针(p的右边是括号,所以先看括号里的.'*'即代表是个指针),这指针指向一个数组(括号看完后就往右看),该数组有6个int型元素.即p为数组指针(后面两个字说明它是指针,前面两个字说明它指向一个数组.就像我们说美女一样,后面一个字说明它是女人,前面一个字才说明它是美丽的.如果是指针数组则说明它先是个数组,然后它的元素为指针,那么该定义为:int *p[6])