*p++与(*p)++与 *(p++)的区别
时间: 2023-08-11 07:03:24 浏览: 187
指针(*p++ , (*p)++, *(p++), *p+2)与结构体遍历
`p++`、`(*p)++` 和 `*(p++)` 是指针操作的三种不同形式。它们的区别如下:
1. `p++`:这是后置递增操作符,它会先使用指针 `p` 的值,然后将 `p` 的值加 1。它返回的是先前 `p` 的值,所以它会将指针指向下一个位置。
2. `(*p)++`:这是对指针 `p` 所指向的值进行后置递增操作。首先,使用解引用运算符 `*` 获取指针 `p` 所指向的值,然后将该值加 1。这个操作不影响指针 `p` 的值,只是对指针所指向的值进行操作。
3. `*(p++)`:这是先使用指针 `p` 的值,然后将 `p` 的值加 1,最后对指针所指向的值进行解引用操作。这个操作会先返回 `p` 指向的值,然后将指针 `p` 指向下一个位置。
总结来说,`p++` 是先取值再递增指针本身,`(*p)++` 是先取指针所指向的值再对该值递增,`*(p++)` 是先取指针所指向的值再递增指针本身。这三种操作在语义上有明显的区别。
阅读全文