int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12} , (*prt)[3]=a, *p=a[0] ; 后两句是什么意思

行指针指向2维数组的a【0】【0】??*p指向a【0】??a【0】具体是哪个... 行指针指向2维数组的a【0】【0】??*p指向a【0】?? a【0】具体是哪个 展开
 我来答
sssstar007
推荐于2018-04-12 · TA获得超过321个赞
知道小有建树答主
回答量:547
采纳率:0%
帮助的人:251万
展开全部
(*prt)[3]=a指的是(*prt)+3的这块指针指向2维数组a的首地址,prt应该是个2维指针。
*p=a[0]指的是大小为3的第二维数组的首地址。
如果不对指针做加法运算的话,不用计较它真正指向几维数组,他们指向的都是a、a[0]、a[0][0]的地址。
百度网友b79519e
2011-04-24 · TA获得超过3399个赞
知道大有可为答主
回答量:1417
采纳率:100%
帮助的人:1306万
展开全部
(*prt)[3]=a,指向数组a,a[0][0],a[0][1],a[0][2]....,a[3][2],指针确实很麻烦..
*p=a[0] ;p指向a[0][0],a[0][1],a[0][2]
验证程序如下:
#include<stdio.h>
void main()
{int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12} , (*prt)[3]=a, *p=a[0] ;
int i;
printf("%d\n",*p);
//printf("%d\n",*prt);这样写是错误的,因为prt是指向一个含3个元素的数组的
//*prt的值是a[0]数组的首地址,&a[0][0],才指向a[0][0];
printf("%d\n",**prt);
for (i=0;i<3;i++)
printf("%d ",*(*prt+i));
printf("%d\n",**(prt+3));

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kjyqxz9jh
2011-04-25 · TA获得超过1825个赞
知道小有建树答主
回答量:2044
采纳率:50%
帮助的人:893万
展开全部
嗯 为数组下标是从0开始的,所以不可能出现4 最后是a[3][2]
1 2 3
4 5 6
7 8 9
10 11 12
对应的数组下标:
a[0][0] a[0][1] a[0][2]
a[1][0] a[1][1] a[1][2]
a[2][0] a[2][1] a[2][2]
a[3][0] a[3][1] a[3][2]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
softch
2011-04-24 · 超过12用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:33万
展开全部
a[0]指的是a[0][0]也就是1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
parllet
2011-04-24 · TA获得超过450个赞
知道小有建树答主
回答量:113
采纳率:100%
帮助的人:43.6万
展开全部
a[0][0], a[0][1], a[0][2], a[0][3]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式