(*++p)=2 (*p)++ 什么意思呢 怎么使用

#include<stdio.h>
void main()
{
int a[5]=(1,3,5,7,9),p=a;
(
++p)=2;
(*p)++;

printf("%d,%d", a[0]+a[1],*p);
}
结果4,3

int a[5]={1,3,5,7,9},*p=a;
这一句就相当于
int a[5];
a[5]={1,3,5,7,9};
int *p;
p = a;//p指向数组a的首地址 a[0]处
然后++p=2; ++p之后,p指向a[1]处
所以a[1] = 2;
(*p)++;就相当于 a[1]++; 该句结束后
a[1]=3
a[0]+a[1]=4, *p 取的是 a[1]的值 为3
因此输出为 4,3
希望对题主有所帮助,望采纳!!


int* p=a是定义指针p指向a首元素,也就是a[0],++p即p向右移动指向a[1],*p是表示p指向的内存地址中存放的内容,所以*(++p)=2就是将a[1]赋值为2
由于当前p指向a[1],且a[1]赋值为2,所以,(*p)++相当于*p=*p+1=2+1=3,即*p=a[1]=3
所以a[0]+a[1]=4,*p=3
*++p = 2;

等价于

p = p + 1;
*p = 2;
(*p)++;

等价于

*p = *p + 1;