初学C语言编程求助!!!

例如输入3,4,结果会输出3>4,问题出在哪里
/* 输入两个整数a和b,按先大后小的顺序输出(利用函数实现)*/

#include <stdio.h>

void main ()

{
int a,b;
int *pointer1,*pointer2;
void swap(int *pointer1,int *pointer2);

printf("Please input two int numbers :\n");
scanf("%d,%d",&a,&b);

pointer1 = &a;
pointer2 = &b;

if(a<b)
{
swap(pointer1,pointer2);
}

printf("a = %d, b = %d\n",a,b);
printf("%d > %d\n",*pointer1,*pointer2);
}

void swap(int *pointer1,int *pointer2)
{
int *p;

p = pointer1;
pointer1 = pointer2;
pointer2 = p;
}

你的交换只是交换了两个指针,但是函数返回后两个指针依旧没变化。你应该交换的是指针指向的值。你可以把swap改成这样试试

void swap(int *pointer1,int *pointer2)
{
int p;

        p = *pointer1;
*pointer1 = *pointer2;
*pointer2 = p;
}追问

明明交换了两个指针,为什么函数返回后两个指针依旧没变化,就是这个地方不太明白

追答

这么跟你说吧,你对参数进行的任何操作都不会影响到参数本身。swap的参数pointer1和pointer2不是主函数里的pointer1和pointer2,相当于是另一个变量被赋予了pointer1和pointer2的值。所以你在函数里面做任何事情都是对新变量操作,不会影响原变量。
至于为什么传递指针进去可以,那是因为指针的本质就是地址,相同的指针的值指向的内存是一个内存空间。

追问

好的谢谢

追答

那麻烦给个采纳呗 谢谢

温馨提示:答案为网友推荐,仅供参考
相似回答