[C语言] 正在用指针,突然想到这样操作会怎样?有兴趣的进来...

[复制链接]
132|6
 楼主 | 2019-4-13 16:29 | 显示全部楼层 |阅读模式
例如:指针ptr = &a[0];
然后这样操作:*ptr = *++ptr;
会发生什么??当然实际应用不会这么写,只是觉得有意思,有兴趣的讨论讨论。
| 2019-4-13 19:04 | 显示全部楼层
boom
| 2019-4-13 20:20 | 显示全部楼层
执行顺序:
ptr = &a[0];   //ptr指向a数组,等效于ptr=a;
++ptr;             //ptr=&a[1];  这里假设ptr和a的内容是一样的字节数
*ptr = *ptr;      //a[1]=a[1];  这里执行完后了后没有什么实质性的变化。除非a[1]是非易失的
| 2019-4-13 20:22 | 显示全部楼层
*ptr = *++ptr;
其中*和++优先级相同,结合方向都是右到左,所以先算*p = *p;然后++p;
a[0]没有变化,p指向了a[1]

评论

chongdongchen 2019-4-13 20:35 回复TA
既然是从右到左,那么自然是先算++啦 
| 2019-4-13 23:04 | 显示全部楼层
   加个括号会死啊?
| 2019-4-14 12:21 | 显示全部楼层
回字有几种写法
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /4 下一条

快速回复 返回顶部 返回列表