C语言 帮我看看这个句子!

来源:百度知道 编辑:UC知道 时间:2024/06/17 13:04:42
*p++。由于++和*同优先级,结合方向为自右而左,因此它等价于*(p++)。
作用是先得到p指向的变量的值(即*p),然后再使p+1赋给p

后面那句的功能是不是写反了呢?明明后面已经用括号括上了 为什么不是先++再取值呢?

这个主要是后缀++的问题。
后缀++的定义是先执行本次动作,稍后再使用++后的值。问题就是这个稍后使用是什么时候。
在*(p++)中 先p++,但在此表达式中依然使用p的值,然后对P取内容。再下次使用P的时候就已经时自增一次后的P。

整条语句执行完才++呢

也就是后面再有p才被赋值为(p+1)

LZ错了.*p++!=*(p++)上机试一下就知道了.

原因是因为后自增运算符要在整个表达式生效以后才将对应的值累加。

所以有*(p++)等价于p指向的变量的值(即*p),然后再使p+1赋给p

p++应该看成一个整体,具有返回值,而这个返回值就是p自增之前的值。。

等于
*p//.....
p++;