关于C语言的简单问题(明天2级考试了,帮忙)

来源:百度知道 编辑:UC知道 时间:2024/05/16 02:10:32
# include <stdio.h>
void main()
{ int a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+4;
printf("%d",*++p);
printf("%d",++*p);
}
答案是4,5.后面的*++p和++*p有什么区别啊??
谢谢高手帮忙~~~
第二个printf答案是5还是6哦??
第二个printf输出的答案受不受第一个printf里面的影响呢??

第一个是先指针P加1,则输出的是*(P+1),也就是*(a+5)=4;
第二个则是++*P,*P=*(a+4)=5,++*P之后则就是++5,答案是6,而不是4了。

*和++运算级一样,从右往左算
*++p就相当于*(++p)
++*p就相当于++(*p)

这里面有运算优先级的概念http://baike.baidu.com/view/1516130.htm
* 和 ++ 优先级一样所以要从右往左。而++运算不改变指针p的地址所以不要误会他会跟着变

*++p要找到地址首先要,++
++*p,这个就是先执行完输出以后,再执行++