*p++和(*p)++的区别
时间: 2023-12-18 15:30:17 浏览: 136
以下是关于*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,然后对这个值进行自增操作
```
相关问题
++*a和*++a的区别
在C语言中,*a和* a的区别在于它们对指针a所指向的变量的操作顺序不同。具体来说,*a表示先对指针a进行解引用操作,再对解引用后的值进行操作;而* a表示先对指针a进行操作,再对指针a所指向的变量进行解引用操作。
例如,假设指针a的值为1,指向一个整型变量x,而x的值为2。那么*a的值就是2,而* a的值就是1。
总结起来,*a是先解引用再操作,而* a是先操作再解引用。这个区别在编程中非常重要,因为它会直接影响到指针所指向的变量的值。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [*p++,*(p++),*++p,(*p)++区别?](https://blog.csdn.net/m0_55004108/article/details/129579530)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
*(p++) 和 *(p)++)的区别
*(p++) 和 *(p)++) 的区别在于递增运算符的位置和优先级。
*(p++) 表示先取出 p 指向的值,然后将指针 p 向后移动一个位置。这里先进行取值操作,再进行递增操作。
*(p)++ 则表示先取出 p 指向的值,然后对这个值进行递增操作。这里先进行递增操作,再进行取值操作。
实际上,*(p)++ 是非法的表达式,因为它试图对一个指针的值进行递增操作,而不是对指针本身进行递增操作。正确的写法应该是 (*p)++,即先取出指针指向的值,再对这个值进行递增操作。
阅读全文