C语言指针求助
void main(){
int a,b,*x,*y;
void fun(int *pa,int *pb);//fun函数的声明
a = 2;
b = 3;
x = &a;
y = &b;
fun(x,y);
}
void fun(int *pa,int *pb)
{
int temp;
temp = *pa;
*pa = *pb;
*pb = temp;
}
程序执行完后,对调了a、b的值。a = 3,b = 2
但是我在fun函数体内加上*pa++;*pb++;仍然是a3b2,请问为什么,谢谢。 把你加上后置++的代码也发上来看一下 BngThea 发表于 2018-7-20 10:54
把你加上后置++的代码也发上来看一下
void main()
{
int a,b,*x,*y;
void fun(int *pa,int *pb);//fun函数的声明
a = 2;
b = 3;
x = &a;
y = &b;
fun(x,y);
}
void fun(int *pa,int *pb)
{
int temp;
temp = *pa;
*pa = *pb;
*pb = temp;
*pa++;
*pb++;
} printf("%p %p\n",pa,pb);
*pa++;
*pb++;
printf("%p %p\n",pa,pb);
以上代码可以说明问题。
你要的效果其实应该是这样:
(*pa)++;
(*pb)++;
了解下优先级,记得没错的话应该是这样
*pa++;这个一个表达式,右到左结合先处理pa++ 在处理*pa
关键是感觉 发表于 2018-7-20 12:59
printf("%p %p\n",pa,pb);
*pa++;
*pb++;
确实是优先级的事,基础知识啊...万分感谢!(^_^)
页:
[1]