char ch[3]={‘a‘,‘c‘,‘e‘}; char *p=ch;
1、
printf("%c\n",*p++); printf("%c\n",*p);
说明:首先 *(指针运算符)和++(自增运算符)都属于单目运算符 ,优先性相同,且结合性都是 自右向左。
*p++ 先执行*p,即取出p指针指向的单元的内容,而后对p进行自增运算,即p指针指向原来单元的下一个单元,即指针p指向c单元。
2、
printf("%c\n",(*p)++); printf("%c\n",*p);
执行结果:
说明:(*p)++ 大家都知道先执行括号内的 即取出p指向单元的内容, 但是与*p++不同的是 自增的不再是p,而是括号里面的整体*p ,(此时p指针也没有向后移位,而是改变了*p,即a自增1 变成了b)
3、
printf("%c\n",*(p++)); printf("%c\n",*p);
执行结果:
说明:*(p++) 先执行括号内的p++,但是如果对p++还进行操作的话 (该操作是 取内容 即* ,与第一个的区别就是 第一个是先进行了取p的内容,在对p进行自增前进行了输出的操作),是先引用p,再对p进行自增,所以第一句输出的仍然是a。
本文出自 “xingNalLu” 博客,请务必保留此出处http://781588100.blog.51cto.com/9429625/1570899
原文地址:http://781588100.blog.51cto.com/9429625/1570899