c语言指针选择题求解答

img

指针学的比较差,有没有人愿意给我讲下详细求解过程,谢谢,好人一生平安

p+=3后,实际p就是“a=%d,b=%d\n"
c=a%b = 1
所以就是printf("a=%d,b=%d\n",c,a,b);
最终输出的是c和a的值,即 a = 1,b=111

p是一个char指针,它指向一个字符串常量"%d,a=%d,b=%d\n"
p指向字符串常量的地址,也就是首字符的地址,指向的是%
你知道,c语言中字符串就是字符数组,所以字符串常量虽然不可修改,但每个字符的地址跟数组一样是连续的
p+3,就是地址+3,那么p就从指向%改为指向a
一个字符串就是从它的地址开始一直到\0结束,所以p现在代表的字符串就是"a=%d,b=%d\n"
剩下的就简单了,把变量的值带入就行了

答:
c的值为1;
p+3, p的值就从“a”开始。
printf的语句就是:
printf("a= %d,b= %d\n",c,a,b); 把c放在第一个%d,a放在第二个%d,
执行的结果就是:a= 1,b= 111