C语言初学者关于两个变量的交换展开的思考
📅 2026/8/3 9:03:57
👁️ 次浏览
提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档文章目录前言一、关于一道交换两个变量的数值的问题1. 第一次尝试直接传递变量4. 原理深入理解前言本文将通过一个具体的编程问题——“使用自定义函数交换两个变量的值”来记录我的思考过程、遇到的困惑、解决方案以及学到的知识。希望我的学习笔记也能帮助到其他初学者。一、关于一道交换两个变量的数值的问题今天我做到这样一道题目要求我在使用自定义函数的情况下交换两个变量的值。这是一个非常经典的编程入门问题它帮助我们理解函数参数传递、变量作用域以及内存操作等核心概念。起初我想到一个比较经典但没有使用函数的做法即使用一个临时中间变量#includestdio.hintmain(){inta5,b10;inttmp;printf(交换前a %d, b %d\n,a,b);// 使用临时中间变量交换tempa;ab;btmp;printf(交换后a %d, b %d\n,a,b);return0;}这种方法简单直观利用临时变量赋值操作就解决了问题。但题目要求使用自定义函数来实现交换我想到了类比这样的操作。1. 第一次尝试直接传递变量我的第一反应是写一个这样的函数voidswap(intx,inty){inttmpx;xy;ytmp;}intmain(){inta5,b10;printf(交换前a %d, b %d\n,a,b);swap(a,b);printf(交换后a %d, b %d\n,a,b);return0;}运行起来发现结果并没有交换 交换前a5,b10交换后a5,b10##2.问题分析与理解 我开启了调试发现main函数中创建了a与bswap函数中创建了形参x和y但与a和b的地址都分别不同这说明x和y是独立的空间那么在swap函数内部交换x和y的值 ⾃然不会影响a和b当swap函数调⽤结束后回到main函数a和b的没法交换。swap函数在使⽤的时候是把变量本⾝直接传递给了函数这种调⽤函数的⽅式我经过询问ai后发现叫传值调用。 结论变量不是指针变量时实参传递给形参的时候形参会单独创建⼀份临时空间来接收实参对形参的修改不影响实参。 这就像我复印了两张照片在复印件上交换了位置但原照片的位置并没有改变。当然ai告诉我还有一种调用方式叫传址调用也就是这道题的正解。 ##3.解决方案使用指针进行传址调用 要真正交换main函数中的变量我需要让函数能够直接操作这些变量的内存地址。这就是C语言中**指针**的概念。 修改后的swap函数 cvoidswap(int*px,int*py){inttmp*px;// 通过指针获取x指向的值*px*py;// 将y指向的值赋给x指向的内存*pytmp;// 将tmp的值赋给y指向的内存}调用方式也需要改变intmain(){inta5,b10;printf(交换前a %d, b %d\n,a,b);swap(a,b);// 传递变量的地址printf(交换后a %d, b %d\n,a,b);return0;}现在运行结果正确了交换前a 5, b 10 交换后a 10, b 54. 原理深入理解让我用图示来解释这个过程main函数中 a(地址1) 5 b(地址2) 10 调用swap(a, b)时 px 地址1 py 地址2 swap函数内部 tmp *px → tmp 5 *px *py → 地址1的值变为10 *py tmp → 地址2的值变为5关键点运算符获取变量的地址*运算符通过地址访问或修改值指针让函数能够跨越作用域修改其他函数的变量通过解决这个“使用自定义函数交换两个变量”的问题我学到了几个重要的C语言概念传值调用 vs 传址调用C语言默认使用值传递函数接收的是参数的副本。要修改原始变量需要传递变量的地址。指针的基本使用指针是存储内存地址的变量取地址*解引用。这是C语言的核心特性之一。函数的作用域函数内部的变量是局部的要影响函数外部的变量需要明确的机制如指针。调试与学习的方法从错误中学习往往比直接得到正确答案收获更多。我通过尝试、观察错误结果、分析原因、查找资料、最终理解原理对这个知识点的记忆更加深刻。这个看似简单的问题实际上触及了C语言编程中函数、内存、指针等基础但重要的概念。作为初学者能够通过这样一个具体问题把这些概念串联起来理解对我来说是非常有价值的。初学指针时我以为像这样通过地址的方式修改变量的值简直是画蛇添足直到我遇到了像这样无指针不可解决的问题我终于理解了指针这一c语言中重要概念的必要性。学习建议如果你也是C语言初学者遇到类似问题时不要只看最终的正确答案。尝试自己先写代码观察运行结果分析为什么不对然后再学习正确的写法。这个过程虽然可能花费更多时间但理解会更加深入。
空洞骑士模组管理器Scarab:如何快速安装和管理游戏模组的完整指南 【免费下载链接】Scarab An installer for Hollow Knight mods written with Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab
Scarab是一款专为《空洞骑士》游戏设计的跨平台…
📅 2026/8/3 9:03:57
目录
1.MSK调制理论
2.本算法实现
3.部分源码
4.仿真测试 最小频移键控(Minimum Shift Keying,MSK)属于连续相位频移键控调制,具备相位连续、频带紧凑、带外衰减快、抗噪声与抗多普勒频移能力优异等特性,广泛应用于…
📅 2026/8/3 9:03:56
更多请点击:
https://intelliparadigm.com
第一章:AI编程工具推荐 现代AI开发已不再依赖单一IDE,而是由协同工作的工具链支撑——从代码补全、调试优化到模型微调与部署,每类工具都承担着关键角色。以下推荐的工具均经过生产环境…
📅 2026/8/3 9:02:56
5分钟学会智慧树自动刷课:终极Chrome插件安装与使用指南 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu
还在为智慧树平台的重复性视频学习而烦恼吗&#x…
📅 2026/8/3 9:46:04
终极指南:如何用NHSE快速编辑《动物森友会》游戏存档 【免费下载链接】NHSE Animal Crossing: New Horizons save editor 项目地址: https://gitcode.com/gh_mirrors/nh/NHSE
还在为《集合啦!动物森友会》中漫长的物品收集和岛屿改造而烦恼吗&…
📅 2026/8/3 9:46:04
1. 神经研究抗体的前沿突破与疾病治疗新视角在神经科学实验室里,抗体就像精准的分子探针,能够锁定特定的神经蛋白靶点。过去五年,单克隆抗体技术的突破使得我们能够制备出识别精度达亚细胞器级别的神经突触标记物。去年Nature Neuroscience报…
📅 2026/8/3 9:46:04
1. 项目概述:为什么你需要一张“活”的库存表? 如果你正在管理一个小仓库、一个工作室的物料,或者只是家里囤积的零食和日用品,你大概率用过Excel来记录东西的进出。一开始,你可能只是简单地建了两张表:一张…
📅 2026/8/3 9:46:04
7月30日,字节对旗下AI与企业服务业务进行了一轮重大组织架构调整。其中,飞书产品团队与豆包产品团队合并,组成新的豆包产品团队;而飞书原有的销售、市场和客户服务团队,则与火山引擎相关团队合并。换句话说,…
📅 2026/8/3 9:46:04
3步解锁qBittorrent隐藏技能:search-plugins搜索插件完全指南 【免费下载链接】search-plugins Search plugins for qBittorrent search feature 项目地址: https://gitcode.com/gh_mirrors/se/search-plugins
你是否还在为寻找种子资源而在多个网站之间来回…
📅 2026/8/3 9:45:02
PC服务器具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构一、前言:具身智能需要“混合算力闭环系统”传统人工智能依赖云端静态数据集训练,不具备物理交互能力,无法适应真实世界的不确定性。具身智能(Embodied…
📅 2026/8/3 0:00:19
前言构建机器人、具身智能这类分布式实时系统,通信底座直接决定整套系统的实时性、容错性、组网能力。分布式领域长期存在 4 类经典通信架构:点对点模式、Broker 中间代理模式、广播模式、以数据为中心(DDS)模式。很多开发者疑惑&…
📅 2026/8/3 0:00:19
完整指南:如何让2008-2017年老款Mac运行最新macOS系统 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher
还在为手中的老款Mac无法升级到最新系统而烦…
📅 2026/8/3 0:00:19
1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…
📅 2026/8/3 1:24:09
温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…
📅 2026/8/3 1:24:09
1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同ÿ…
📅 2026/8/3 1:24:09
AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言
HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…
📅 2026/8/3 1:24:08
无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut
在数字媒体创作领域,视频编辑处理的质量损…
📅 2026/8/3 1:24:08
1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…
📅 2026/8/3 1:24:08