c语言中error C2440: '=' : cannot convert from 'int [5][6]' to 'int *'
#include<stdio.h>intmain(void){inta[5][6];intm,n;inti=10;int*p;for(m=0;m<5;m++){for(n...
# 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不是代表数组的首地址么? 求解释? 展开
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不是代表数组的首地址么? 求解释? 展开
3个回答
展开全部
呃,楼主."p = a;"这语句是不合法的,两个类型相同的指针才能进行赋值的.
a是二维数组指针常量,p是一维指针,类型明显不一样嘛...
如果要使"p = a;"这语句合法,那么应该这样定义p:
int (*p)[6]; //看声明先看变量名,然后由右往左看.如果遇到括号则先看括号里的.所以这声明是说:p是个指针(p的右边是括号,所以先看括号里的.'*'即代表是个指针),这指针指向一个数组(括号看完后就往右看),该数组有6个int型元素.即p为数组指针(后面两个字说明它是指针,前面两个字说明它指向一个数组.就像我们说美女一样,后面一个字说明它是女人,前面一个字才说明它是美丽的.如果是指针数组则说明它先是个数组,然后它的元素为指针,那么该定义为:int *p[6])
如果你的程序中用"p = a;",那么下面的printf语句应改为:
printf("a[%d][%d]=%d", m, n, p[m][n]);
a是二维数组指针常量,p是一维指针,类型明显不一样嘛...
如果要使"p = a;"这语句合法,那么应该这样定义p:
int (*p)[6]; //看声明先看变量名,然后由右往左看.如果遇到括号则先看括号里的.所以这声明是说:p是个指针(p的右边是括号,所以先看括号里的.'*'即代表是个指针),这指针指向一个数组(括号看完后就往右看),该数组有6个int型元素.即p为数组指针(后面两个字说明它是指针,前面两个字说明它指向一个数组.就像我们说美女一样,后面一个字说明它是女人,前面一个字才说明它是美丽的.如果是指针数组则说明它先是个数组,然后它的元素为指针,那么该定义为:int *p[6])
如果你的程序中用"p = a;",那么下面的printf语句应改为:
printf("a[%d][%d]=%d", m, n, p[m][n]);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询