news 2026/2/8 10:27:28

简单理解: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/2/8 4:07:56

快速搞懂五种主流AI Agent框架!解决选择困难~

前言 在2023年以前,AI Agent更多是强化学习领域的概念,通过在复杂环境中获取人类反馈的奖励信息从而得以不断提升。 大模型的出现为AI Agent提供了“聪明的大脑”,并重新定义了AI Agent。 当前,由大模型驱动的AI Agent架构是比较常…

作者头像 李华
网站建设 2026/2/8 1:03:53

AI赋能的全球网络环境仿真:IoT设备测试新范式

在全球化IoT部署浪潮中,设备需适应从北欧极地低延迟5G到东南亚高抖动移动网络的极端环境差异。传统物理测试受限于地理条件与成本,难以覆盖纽约地铁信号衰减、撒哈拉沙漠高温网络波动等场景。本文系统性阐述基于AI的全球网络环境仿真技术如何重构测试方法…

作者头像 李华
网站建设 2026/2/7 3:11:00

uniapp个人健康养生运动推荐管理小助手小程序php python

文章目录 功能概述技术架构核心模块扩展能力部署要点 系统设计与实现的思路主要技术与实现手段源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 功能概述 该小程序基于UniApp跨平台框架开发,结合PHP或Python后端,实…

作者头像 李华
网站建设 2026/2/7 9:27:44

设计模式——责任链模式

责任链模式 (Chain of Responsibility Pattern) 什么是责任链模式? 责任链模式是一种行为型设计模式,它允许你将请求沿着处理者链传递,直到有一个处理者能够处理该请求。 简单来说:责任链模式就是"踢皮球",一…

作者头像 李华
网站建设 2026/2/6 12:07:21

VMware Skyline Health Diagnostics 4.0.11 - 自助式诊断与健康检查平台

VMware Skyline Health Diagnostics 4.0.11 - 自助式诊断与健康检查平台 适用于 VMware vSphere、vSAN、VCF 和 SD-WAN 产品的健康诊断 请访问原文链接:https://sysin.org/blog/vmware-skyline-health-diagnostics/ 查看最新版。原创作品,转载请保留出…

作者头像 李华
网站建设 2026/2/7 5:10:33

立体防护,主动出击:华为云HSS为云上资产筑起“铜墙铁壁”

云时代,企业数字化高歌猛进,主机安全却如履薄冰。从工业巨头遭勒索攻击导致敏感数据泄露、供应链断裂,到各类挖矿病毒、窃密木马频发,再到漏洞风险激增、等保合规要求持续收紧……传统安全手段依赖特征库、响应滞后,在…

作者头像 李华