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

来源:百度知道 编辑:UC知道 时间:2024/06/15 18:54:21
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;
这句话是怎么来计算的,麻烦大家能给个说明
谢谢拉

(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