鱼C论坛

 找回密码
 立即注册
查看: 2375|回复: 3

[已解决]如下代码,为什么程序可以运行,但没有实现最大数和最小数的交换呢?

[复制链接]
发表于 2018-5-3 21:12:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 SWJ。 于 2018-5-3 21:15 编辑

#include <stdio.h>
void swap(int *m,int *n);
void main()
{
        int a,b;
        int *pointer_1,*pointer_2;

        scanf("%d %d",&a,&b);

        if(a<b)
        {
                swap(&a,&b);
        }

        printf("max=%d,min=%d\n",a,b);
}

void swap(int *m,int *n)
{
        int *temp;

                temp=m;
                m=n;
                n=temp;

}
最佳答案
2018-5-3 21:36:49
void swap(int *m,int *n)
{
        int temp;

                temp=*m;
                *m=*n;
                *n=temp;

}

你换地址当然不会成功了,回到函数 还会是原来的地址,所以,你需要换值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-3 21:36:49 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
void swap(int *m,int *n)
{
        int temp;

                temp=*m;
                *m=*n;
                *n=temp;

}

你换地址当然不会成功了,回到函数 还会是原来的地址,所以,你需要换值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-3 22:03:38 From FishC Mobile | 显示全部楼层
不应该交换地址,而是应该交换地址里面存放的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-3 22:58:34 | 显示全部楼层
这不是谭浩强C++上面指针的例子吗?调用函数时不会改变实参指针变量的值,但可以改变实参指针变量所指向变量的值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-1 21:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表