++p等于(p+1)嘛?
我这里一个例子
void a(int* p)
{
printf("%d\n",*++p);
}
void main(){
int x = 20;
a(&x);
}
为什么得出的结果跟我算的21不一样- -#应该是我理解错意思了,求大神指教下表达式
*++p是什么意思
我这里一个例子
void a(int* p)
{
printf("%d\n",*++p);
}
void main(){
int x = 20;
a(&x);
}
为什么得出的结果跟我算的21不一样- -#应该是我理解错意思了,求大神指教下表达式
*++p是什么意思
表达式*++p,代表先++p,然后再取*p
相当于*(++p)
++p之后,p就指向x后面那个没有意义的int地址,++p相当于(p=p+1)
然后再取它的值,自然是一堆乱码
尝试一下,
void plus_before_get_value(int *p){
printf("%d\n",*++p)
}
void get_value_before_plus(int *p){
printf("%d\n",++(*p))
}
int main(){
int *a=new int[2];
a[0]=2;a[1]=5;
inr *p1=a,*p2=a;
plus_before_get_value(p1);
get_value_before_plus(p2);
printf("%d %d",a[0],a[1]);
return 0;
}
第一个函数中,先将p自增,得到a+1(即a[1]地址),再将该地址上的元素输出
第二个函数中,先取p指向的地址上的值(即a[0]),再将其自增(相当于++a[0])