C语言中二维数组的与行指针 20

C程序中可以用*(*(a+i)+j)来引用一个二维数组中任一元素a[i][j],下列关系是等价的:1.a与&a[0];2.*a与a[0]与&a[0][0],而且它们的值都... C程序中可以用*(*(a+i)+j)来引用一个二维数组中任一元素a[i][j],
下列关系是等价的:1.a 与&a[0];2.*a 与a[0]与&a[0][0],而且它们的值都相同.
我的疑问是:当使用指针引用数组元素时,为什么必须用行指针(*p)[]?既然指针变量的值就是地址,为什么不能把a赋给一个指针变量p呢.
如下例:
main()
{static int a[2][3]={1,2,3,4,5,6};
int *p=a;/*此语句有问题,若改成定义行指针:int(*p)[3]=a;则编译通过*/
for(i=0;i<2;i++)
for(j=0;j<3;j++)
printf("%2d",*(*(p+i)+j));
printf("\n");
}
展开
 我来答
勇气和激情
2007-12-01 · TA获得超过466个赞
知道小有建树答主
回答量:750
采纳率:100%
帮助的人:265万
展开全部
int *p=a;
/*此语句有问题,若改成定义行指针:int(*p)[3]=a;则编译通过*/
一个普通指针是不行的,它是二维数组嘛。
得用一个行指针才行。学习C程序最基本的东西,也没有必要问那么多为什么,自己编译通过,就那么用就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式