*p++与( *p)++有什么区别
时间: 2024-01-17 20:18:04 浏览: 29
*p++和(*p)++是两种不同的表达式,它们之间有以下区别:
1. *p++:这个表达式先对指针p进行解引用,然后再对p进行递增操作。换句话说,它先取出p指向的值,然后再将p的值加1。这个表达式的值是解引用前的p指向的值。
2. (*p)++:这个表达式先对指针p进行解引用,然后再对解引用后的值进行递增操作。换句话说,它先取出p指向的值,然后再将该值加1。这个表达式的值是解引用后的p指向的值加1。
总结起来,*p++是先解引用再递增,而(*p)++是先解引用后递增。这两个表达式的结果值是不同的。
相关问题
*p++与(*p)++的区别
*p++与(*p)++的区别如下所示:
1. *p++:这个表达式先取出指针p所指向的值,然后将指针p向后移动一个位置。换句话说,它先取值再移动指针。
2. (*p)++:这个表达式先取出指针p所指向的值,然后对这个值进行自增操作,最后指针p不发生移动。换句话说,它先取值再自增。
下面是一个C语言的例子来演示这两个表达式的区别:
```c
#include <stdio.h>
int main() {
int seat = 1534;
int *p = &seat;
printf("%d\n", *p++); // 输出:1534,先取值再移动指针
printf("%d\n", (*p)++); // 输出:1534,先取值再自增
printf("%d\n", *p); // 输出:1535,指针已经移动到下一个位置
return 0;
}
```
在这个例子中,我们首先定义了一个整型变量seat,并将其地址赋给指针p。然后,我们使用*p++和(*p)++分别对指针p所指向的值进行操作。最后,我们打印出了指针p所指向的值以及指针p的值。
需要注意的是,虽然*p++和(*p)++的语句返回的值是一样的,但它们最后的结果是不一样的。*p++会先取值再移动指针,而(*p)++会先取值再自增。因此,在使用这两个表达式时需要注意它们的不同效果。
*p++和(*p)++的区别
以下是关于*p++和(*p)++的区别:
1.*p++表示的是先取p指向的值,然后再将指针p向后移动一位。
```c
int arr[] = {1, 2, 3, 4};
int *p = arr;
int value = *p++; // 先取p指向的值,即1,然后p向后移动一位
```
2.(*p)++表示的是先取p指向的值,然后对这个值进行自增操作。
```c
int arr[] = {1, 2, 3, 4};
int *p = arr;
int value = (*p)++; // 先取p指向的值,即1,然后对这个值进行自增操作
```