为什么不能用swap函数代替/* */部分呢?还是说这个函数是写的有问题的?因为结果是值没有交换

#include <stdio.h>
int main()
{//交换地址
void swap(int *p1,int *p2); //申明swap函数
int a,b;                    //定义初始变量
int *pointer_1,*pointer_2;  //定义两个指针变量
printf("please enter a and b:\n");
scanf("%d,%d",&a,&b);       //将输入的两个常数赋值给初试变量a ,b
pointer_1 = &a;
pointer_2 = &b;
printf("pointer_1 = %d,pointer_2 = %d\n",*pointer_1,*pointer_2);
printf("a = %d,b = %d\n",a,b);
swap(pointer_1,pointer_2);
/*int *p;
p = pointer_1;
pointer_1 = pointer_2;
pointer_2 = p;*/
printf("max = %d,min = %d",*pointer_1,*pointer_2);
return 0;
}
void swap(int *p1,int *p2)
{
 int *p;
 p = p1;
 p1 =p2;
 p2 = p;
}

张幼安
浏览 1918回答 1
1回答

宾丶高

你交换了指针的指向,但并没有改变指针指向的内容,将swap函数改为int p; p = *p1; *p1 =*p2; *p2 = p;,就可以了
打开App,查看更多内容
随时随地看视频慕课网APP