*p++和(*p)++
时间: 2023-12-02 14:03:53 浏览: 41
*p++和(*p)++都是指针操作符,但它们的含义不同。
*p++表示先取出指针p所指向的值,然后将指针p向后移动一个单位。例如,如果p指向一个数组,那么*p++就是取出数组中当前位置的值,然后将指针p指向下一个元素。
(*p)++表示先取出指针p所指向的值,然后将该值加1。例如,如果p指向一个整型变量,那么(*p)++就是将该变量的值加1。
需要注意的是,这两个操作符的优先级不同。*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,然后对这个值进行自增操作
```
*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)++会先取值再自增。因此,在使用这两个表达式时需要注意它们的不同效果。