鱼C论坛

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

C语言交换函数

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

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

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

x
  1. void swap(int *a, int *b)
  2. {
  3.         int *t = a ;
  4.         a = b;
  5.         b = t;
  6. }

  7. int main()
  8. {
  9.         int a = 3;int b = 4;
  10.         swap(&a, &b);
  11.         printf("%d%d", a, b);

  12. }
复制代码


为什么这种方式无法完成交换
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-9-16 11:31:37 | 显示全部楼层
你交换的只是 指针的值,又不是 指针指向的值
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-16 11:31:45 | 显示全部楼层
你没理解指针和解引用
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

你可以把*的位置挪一挪,试一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-16 13:04:18 | 显示全部楼层
像楼上那样改一下试试
小甲鱼最新课程 -> https://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 还是原来的值。
小甲鱼最新课程 -> https://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;

}
因为你在函数里面交换的是两个参数的地址,并没有对里面的值进行操作。我修改了一下,你再看看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-26 16:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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