鱼C论坛

 找回密码
 立即注册
查看: 1914|回复: 6

C语言交换函数

[复制链接]
发表于 2021-9-16 11:22:32 | 显示全部楼层 |阅读模式

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

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

x
void swap(int *a, int *b)
{
        int *t = a ;
        a = b;
        b = t;
}

int main()
{
        int a = 3;int b = 4;
        swap(&a, &b);
        printf("%d%d", a, b);

}

为什么这种方式无法完成交换
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-16 11:31:37 | 显示全部楼层
你交换的只是 指针的值,又不是 指针指向的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-16 11:31:45 | 显示全部楼层
你没理解指针和解引用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-16 11:44:19 From FishC Mobile | 显示全部楼层
void swap(int *a, int *b)
{
        int t = *a ;
        *a = *b;
        *b = t;
}

你可以把*的位置挪一挪,试一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-16 13:04:18 | 显示全部楼层
像楼上那样改一下试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-16 18:36:26 | 显示全部楼层
调用 swap() 函数时,往函数传了两个实参 &a&b,这时计算机只是把 &a&b复制一份分别放到 swap() 函数的两个形参 ab 中,在 swap() 函数中,ab 的值互换,即将地址互换,对于 &a&b 这两个原件来说没有影响,swap() 函数执行完后,swap() 函数的两个变量 ab 就被释放了,主函数的输出语句 printf("%d%d", a, b);ab 还是原来的值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-16 21:48:56 | 显示全部楼层
#include<stdio.h>
void swap(int *a, int *b)
{
        int temp = *a ;
        *a = *b;
        *b = temp;
}

int main()
{
        int a = 3;int b = 4;
        swap(&a, &b);
        printf("a=%d\nb=%d", a, b);
        return 0;

}
因为你在函数里面交换的是两个参数的地址,并没有对里面的值进行操作。我修改了一下,你再看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 08:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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