红豆文案网-每一句文案都惊艳世界

红豆文案网-每一句文案都惊艳世界

++和*和*p++的区别

59

`(*p)++`、`*(p++)`和`*p++`的区别主要在于它们的运算顺序和返回值不同。

1. `(*p)++`:

这个表达式首先解引用指针`p`,获取它所指向的值,然后将这个值加1。

运算顺序是先取值,再自增。

返回值是`p`所指向的原始值,然后该值自增1。

示例:如果`p`指向数组中的某个元素,`(*p)++`会先返回该元素的值,然后将该元素的值加1。

2. `*(p++)`:

这个表达式与`(*p)++`类似,也是先解引用指针`p`,获取它所指向的值,然后将指针`p`自增1。

运算顺序也是先取值,再自增。

返回值同样是`p`所指向的原始值,然后该值自增1。

示例:如果`p`指向数组中的某个元素,`*(p++)`会先返回该元素的值,然后指针`p`自增1,指向下一个元素。

3. `*p++`:

这个表达式先解引用指针`p`,获取它所指向的值,然后指针`p`自增1。

运算顺序是先取值,再自增。

返回值是`p`所指向的原始值,然后指针`p`自增1。

示例:如果`p`指向数组中的某个元素,`*p++`会先返回该元素的值,然后指针`p`自增1,指向下一个元素。

总结:

`(*p)++`和`*(p++)`以及`*p++`在运算顺序和返回值上是相同的,都是先取值,再自增。

它们的区别在于表达式的形式和可读性,`(*p)++`明确表明是先取值再自增,而`*(p++)`和`*p++`则可能让人误解为先自增再取值。

建议:

在实际编程中,为了代码的可读性和避免混淆,建议使用`(*p)++`来明确表示先取值再自增的操作。