一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

C 指针*p++与*++p的学习笔记

时间:2014-03-27 编辑:简简单单 来源:一聚教程网

例子:

 代码如下 复制代码

#include
int data[2] = {100, 200};
int moredata[2] = {300, 400};
int main(void)
{
int * p1, * p2, * p3;
p1 = p2 = data;
p3 = moredata;
printf(" *p1 = %d, *p2 = %d, *p3 = %dn", *p1, *p2, *p3);
printf(" *p1++ = %d, *++p2 = %d, (*p3)++ = %dn", *p1++, *++p2, (*p3)++);
printf(" *p1 = %d, *p2 = %d, *p3 = %dn", *p1, *p2, *p3);
return 0;
}

他的输出是:

*p1 = 100, *p2 = 100, *p3 = 300
*p1++ = 100, *++p2 = 200, (*p3)++ = 300
*p1 = 200, *p2 = 200, *p3 = 301

其他的相信都很明确了,那么含糊不清的其实是*p++和*++p的区别在哪里了,回忆一下i++和++i的,一个是先使用,再运算,一个是先运算,再使用(见一道题搞懂i++与++i),根据优先级,*与++是一样的,他们是从右向左运算,所以先考虑++的情况,所以前者*p1了一次(使用),在运算(p1++并非*p1++),而后者则不同。

当然,最好还是应该有括号,比较清晰* (start++)

热门栏目