最佳答案
//你传入swap的是地址,
//但是在swap中你执行的是地址交换而没有值交换
//
#include
void swap(int * p1, int * p2)
{
printf("交换前:\n %p == %d\n %p == %d\n\n", p1,*p1, p2,*p2);
int max;
max = * p1;
* p1 = * p2;
* p2 = max;
printf("交换时:\n %p == %d\n %p == %d\n\n", p1,*p1, p2,*p2);
}
int main()
{
int * p1, * p2, a, b;
scanf("%d %d",&a,&b);
printf("%d, %d\n", a, b);
p1 = &a;
p2 = &b;
printf("初始化:\n %p == %d\n %p == %d\n\n", p1,*p1, p2,*p2);
swap(p1,p2);
printf("交换后:\n %p == %d\n %p == %d\n\n", p1,*p1, p2,*p2);
return 0;
}
//你可以在你的代码中也按照我给的printf打印初交换前后的地址与值得匹配状态。
最佳答案由网友 jariii 提供