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

例如输入3,4,结果会输出3>4,问题出在哪里/*输入两个整数a和b,按先大后小的顺序输出(利用函数实现)*/#include<stdio.h>voidmain(){in... 例如输入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;
}
展开
 我来答
百度网友9f8ba65
2017-07-21 · TA获得超过1017个赞
知道小有建树答主
回答量:384
采纳率:86%
帮助的人:90.9万
展开全部

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

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

        p = *pointer1;
*pointer1 = *pointer2;
*pointer2 = p;
}
更多追问追答
追问
明明交换了两个指针,为什么函数返回后两个指针依旧没变化,就是这个地方不太明白
追答
这么跟你说吧,你对参数进行的任何操作都不会影响到参数本身。swap的参数pointer1和pointer2不是主函数里的pointer1和pointer2,相当于是另一个变量被赋予了pointer1和pointer2的值。所以你在函数里面做任何事情都是对新变量操作,不会影响原变量。
至于为什么传递指针进去可以,那是因为指针的本质就是地址,相同的指针的值指向的内存是一个内存空间。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式