*(p++)于*++p的区别?

来源:百度知道 编辑:UC知道 时间:2024/06/09 18:47:02
区别在哪里 能不能举个简单的例子说明下 我胡涂了

请参考以下程序:

#include <stdio.h>
void main()
{
int a[9]={1,2,3,4,5,6,7,8,9};
int *p = a;
printf("%d", *(p++));
}

#include <stdio.h>
void main()
{
int a[9]={1,2,3,4,5,6,7,8,9};
int *p = a;
printf("%d", *++p);
}

一个输出是1
一个输出是2

你自己编个程,看结果不就知道了

*(p++)意思是值就为*P的值
而*++p的值是P指向的下一个地址的值

*(p++)意思是值就为*P的值 ,然后p再加1。
而*++p的值是P指向的下一个地址的值 。

引用了2楼的话,他是正解。
不过这么简单的问题,问人不如自己动手

两者基本用于数组的顺序访问。*为解引用
*(p++)即
*p;
p++;意义为先访问p所指元素。然后p移动到下一元素地址,注意不是加1,指针的类型决定指针算术运算时的地址偏移,比如对于int *p,那么p++后p将偏移一个sizeof(int)一般计算机上是两字节。
*++p即
++p;
*p;意义为p先偏移至下一元素地址,然后访问它。这里*的优先级比前置++低,所以相当于*(++p)