关于C语言中数组元素的引用问题

有这样一道二级的真题:若有以下程序段:inta[12]={0},*p[3],**pp,i;for(i=0;i<3;i++)p[i]=&a[i*4];pp=p;则对数组元素... 有这样一道二级的真题: 若有以下程序段: int a[12]={0},*p[3],**pp,i; for(i=0;i<3;i++) p[i]=&a[i*4]; pp=p; 则对数组元素的错误引用是______ A.pp[0][1] B.a[10] C.p[3][1] D.*(*(p+2)+2) 答案选C,我想是因为3超出了范围吧。 B肯定是对的。 那么A和D该怎么理解呢? 能不能归纳一下C语言里面数组元素引用的问题? 展开
 我来答
家薇功乐然
2019-08-20 · TA获得超过3704个赞
知道大有可为答主
回答量:3182
采纳率:30%
帮助的人:478万
展开全部
A:
int
**pp;表示pp所指的是一个二维数组,所以它的引用可以这样用pp[][]的形式;
D:
因为p[i]=&a[i*4];有p[0]=&a[0],所以*(p+2),
即p[2],指的是a[8];
*(*(p+2)+2)指的就是a[10];
p[0]->
a[0]
a[1]
a[2]
a[3]
p[1]->
a[4]
a[5]
a[6]
a[7]
p[2]->
a[8]
a[9]
a[10]
a[11]
C的错误就在于行指针超出范围:最大只能是2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式