#include<stdio.h>
int main(void)
{
int x;
int y;
int * p1,* p2;
scanf("%d %d",&x,&y);
p1 = &x;
p2 = &y;
int swap(int * p_1,int * p_2);
swap(p1,p2);
printf("max=%d min=%d\n",* p1,* p2);
printf("%d %d",x,y);
return 0;
}
int swap(int * p_1,int * p_2)
{
if(*p_1<*p_2)
{
int * temp;
temp = p_1;
p_1 = p_2;
p_2 = temp;
}
}
你打印下p1和p2的地址,以及p_1和p_2的地址,它们的地址不同的,只是指向相同的内容。所以函数里改变指向不影响p1和p2,但改变指向的内容可以影响。
定义函数里面交换的时候加上*
楼上说的很对,差不多就这样
int swap(int * p_1,int * p_2)
{
if(*p_1<*p_2)
{
int temp;
temp = *p_1;
* p_1 = *p_2;
*p_2 = temp;
}
}