赞
踩
1、分析;
p++;
*p;
p++使p指向下一个元素a[1]。然后若再执行*p,则得到下一个元素a[1]的值。
2、*p++;
由于++和*同优先级,结合方向为自右而左,因此它等价于*(p++)。先引用p的值,实现*p的运算,然后再使p自增1。
列如:
- for(i=0;i<10;i++,p++)
- printf("%d",*p);
- 可以改写为
- for(i=0;i<10;i++)
- printf("%d",*p++);
作用完全一样。它们的作用都是先输出*p的值,然后使p值加1。这样下一次循环时,*p就是下一个元素的值。
3、*(p++)和*(++p)作用是否相同?不相同。前者是先取*p值,然后使p加1。后者是先使p加1,再取*p。若p初值为a(即&a[0]),若输出*(p++),得到a[0]的值,而输出*(++p),得到a[1]的值。
4、++(*p)。表示p所指向的元素值加1,如果p=a,则++(*p)相当于++a[0],若a[0]的值为3,则再执行++(*p)(即++a[0])后a[0]的值为4。注意:是元素a[0]的值加1,而不是指针p的值加1。
5、如果p当前指向a数组中第i个元素a[i],则:
*(p--)相当于a[i--],先对p进行“ * ”运算(求p所指向的元素的值),再使p自减。
*(++p)相当于a[++i],先使p自加,再进行“ * ”运算。
*(--p)相当于a[--i],先使p自减,再进行“ * ”运算。
将++和--运算符用于指针变量十分有效,可以使指针变量自动向前或向后移动,指向下一个或上一个数组元素。列如,想输出a数组的100个元素,可以使用下面的方法:
p=a;
while(p<a+100)
printf("%d",*p++);
或
p=a;
while(p<a+100)
{
printf("%d",*p);
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。