C语言求助,大家有空就进来帮个忙 谢谢啦

66.若有定义和语句staticinta[3]={10,20,30};int**pp,*p;p=a;pp=&p;(pp[0]++)[1]+=5;printf(“%d,%d... 66.若有定义和语句
static int a [3]={10,20,30};
int ** pp, *p;
p=a;pp=&p;
(pp[0]++)[1]+=5;
printf(“%d, %d, %d\n”, ** pp, *p,a[0]);
则输出结果是
A 25,25,10 B 10,25,10 C 25,25,15 D 输出结果不确定

(pp[0]++)[1]+=5;
这句话是怎么来计算的,麻烦大家能给个说明
谢谢拉
展开
 我来答
hglg1979
2009-02-13 · TA获得超过1074个赞
知道小有建树答主
回答量:1274
采纳率:0%
帮助的人:682万
展开全部
(pp[0]++)[1]+=5;

pp[0]就是p
那么以上就是(p++)[1]+=5;
那么分解开来就是:
先p[1]+=5; // 即a[1]+=5, a为{10,25,30}
再p++; // p指向25

所以输出25,25,10

C语言中,指针变量可以当成数组来用,但是下标是否越界程序员自己负责。
int a[10], *p;
p=a;
p[0] 相当于*p 既 a[0];
p[1] 相当于*(p+1) 既 a[1];
......

所以pp[0]就是p
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式