指针++*p++

来源:互联网 发布:linux的date命令 编辑:程序博客网 时间:2024/05/30 22:59

下面是测试代码:

#include <stdio.h>main(){char b [] = "aehlox";char *p = b;printf("%s\n", p);printf("%s\n", p++);printf("%c\n", *p++);printf("%c\n", (*p)++);printf("%c\n", ++*p++);printf("%s\n", p);printf("%s\n", b);}


大家先想想输出结果


结果是:

aehlox
aehlox
e
h
j
lox
aejlox


p:自然指向字符a位置

p++:先返回p(输出aehlox),再加1,即指向下一个字符e的位置

*p++:先返回*p(输出e),再加1,即指向下一个字符f的位置

(*p)++:先返回*p(输出h),再加1,把f位置的值修改成i

++*p++:由于操作符*和++优先级一样,且是向左结合,因此先执行p++,结果是返回p的拷贝(指向i的位置),p向后移动一个位置,接着执行++*p,即给p的指向加1,此时p指向的值为i+1后的值,即j

p:p此时指向l位置,打印输出lox

最后打印数组内容为:

原创粉丝点击