news 2026/4/15 14:58:34

简单理解:C 语言交换两个数为啥需要 临时变量t

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
简单理解:C 语言交换两个数为啥需要 临时变量t

先看反例:不用t会怎么样?

假设我们想交换a=1b=2,如果直接这么写:

// 错误示范:没有临时变量t *a = *b; // 把b的值(2)赋给a → 现在a=2,b=2 *b = *a; // 再把a的值(已经变成2了)赋给b → 最终a=2,b=2

结果是两个数都变成了 2,原来的 a 的值(1)彻底丢了,根本没完成交换!

再看正确逻辑:t 的作用是 “暂存”

t就是一个临时的 “小仓库”,专门用来保存被覆盖前的值,避免丢失:

int t = *a; // 先把a的原始值(1)存到t里 → t=1,a=1,b=2 *a = *b; // 把b的值(2)赋给a → a=2,b=2,t=1(关键:t还存着1) *b = t; // 把t里的原始a值(1)赋给b → a=2,b=1,完成交换

用生活例子理解

你可以把这个过程想象成:

  1. 你有两个杯子:A 杯装可乐,B 杯装雪碧;
  2. 你想把 A 杯换成雪碧,B 杯换成可乐;
  3. 如果直接把 B 杯的雪碧倒进 A 杯 → A 杯的可乐就没了,之后再倒也只能倒雪碧;
  4. 所以你需要一个空杯子t:先把 A 杯的可乐倒进t,再把 B 杯的雪碧倒进 A 杯,最后把t里的可乐倒进 B 杯 → 完美交换。

回到代码里的 swap 函数

void swap(int *a, int *b) { int t = *a; // t = 左指针位置的原始值(比如0) *a = *b, *b = t; // 把右指针的非0值赋给左指针,再把t里的0赋给右指针 }

比如之前例子里交换nums[0]=0nums[1]=1

  • t = nums[0]t=0
  • nums[0] = nums[1]nums[0]=1
  • nums[1] = tnums[1]=0;最终实现[0,1][1,0],这一步没有t就做不到。

总结

  1. t临时变量,核心作用是暂存被覆盖前的原始值,避免交换时数据丢失;
  2. 直接互相赋值会导致其中一个值被覆盖,无法完成真正的交换;
  3. 所有交换两个变量的场景(不管是数字、数组元素),几乎都需要这样的临时变量。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/4 11:14:54

供应 力科 CP031 100M 30A电流探头

力科CP031探头 是一款高性能电流探头,适用于各种电子测试应用。‌ 技术规格和性能参数 ‌最大连续输入电流‌:30A ‌最大峰值电流‌:50A ‌带宽‌:100 MHz ‌灵敏度‌:10 mA/div ‌耦合方式‌:交流、直流、…

作者头像 李华
网站建设 2026/4/1 15:52:27

2026最新CDGA备考重点学习笔记(第3章)

二、核心内容与目标 三、业务驱动因素 四、数据治理程序特征 五、数据治理原则 六、数据治理组织架构 七、数据治理活动 八、数据治理工具与方法 九、数据治理度量指标 一、核心定义与职能 数据治理定义 数据治理是对数据资产管理行使权力、控制和共享决策的系列活动&#xff…

作者头像 李华
网站建设 2026/4/14 18:40:46

一个开源工具:10 分钟让 Moltbot/Clawdbot 接入飞书机器人

原文:WY 我开源了一个工具:10 分钟让 Clawdbot 接入飞书机器人 地址:https://x.com/akokoi1/status/2016420074203287825为了解决 Clawdbot 官方不支持国内通信软件的问题,我做了一款桥接工具,用于连接飞书和 Clawdbot…

作者头像 李华
网站建设 2026/4/11 21:05:17

SEW变频器MC07B0300-503-4-00 8285306

SEW 变频器 MC07B0300-503-4-00 (8285306) 详细介绍 1. 产品概述与定位 SEW Eurodrive 是全球领先的驱动技术供应商,其产品广泛应用于工业自动化领域。MC07B0300-503-4-00 变频器(物料号 8285306)属于 SEW 的 MOVIMOT 系列产品线中的一员&a…

作者头像 李华
网站建设 2026/4/10 6:55:33

98000赞!大龙虾太火了!Clawdbot一夜爆红,7*24AI数字员工!

👇我的小册 54章教程:(小白零基础用Python量化股票分析小册) ,原价299,限时特价2杯咖啡,满100人涨10元。 转自:新智元 这个名叫「Clawdbot」的AI,在全网热度持续攀升,搜索量一度赶超神级Claude Code。 网友…

作者头像 李华