指针++*p++

下面是测试代码:

#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

最后打印数组内容为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值