求助:帮忙看段程序,分析一下,谢谢!
#include <stdio.h>
int main()
{
void swap(int * p1,int * p2);
int a,b;
int * pointer_1,* pointer_2;
printf("Please enter two integer number:");
scanf("%d,%d",&a,&b);
pointer_1=&a;
pointer_2=&b;
if (a<b) swap(pointer_1,pointer_2);
printf("max=%d,min=%d\n",* pointer_1,* pointer_2);
return 0;
}
void swap(int * p1,int *p2)
{
int * p;
p=p1;
p1=p2;
p2=p;
}
请问为什么,我输入两个数,比如5和9,它不能正确输出 max=9,min=5,谢谢!
[解决办法]
swap函数得这么写
void swap(int * p1,int *p2)
{
int p;
p=*p1;
*p1=*p2;
*p2=p;
}
你写的只是交换指针的值,而不是交换指针所指向的值
[解决办法]
void swap(int ** p1,int **p2)
//交换int需要int指针
//交换int*需要int*的指针
{
int * p;
p = * p1;
* p1 = * p2;
* p2 = p;
//注意上面代码中那些*号,用了*号后的赋值操作才能影响调用代码中的变量。
}
int main()
{
int a,b;
int * pointer_1,* pointer_2;
printf("Please enter two integer number:");
scanf("%d,%d",&a,&b);
pointer_1=&a;
pointer_2=&b;
if (a<b) swap( & pointer_1, & pointer_2);
//swap改为交换指针了,那么这里也要改为传递指针变量的地址
printf("max=%d,min=%d\n",* pointer_1,* pointer_2);
return 0;
}
void swap(int * p1,int *p2)
{
int p;
p=*p1;
*p1=*p2;
*p2=p;
}