1. 函数交换原理与实现思路
指针操作是C语言中最基础也最核心的概念之一。这个swap函数看似简单,却包含了指针、内存访问、函数参数传递等多个关键知识点。我们先从内存层面理解这个函数的工作原理。
当我们在主函数中声明两个float变量时,比如:
c复制float a = 3.14;
float b = 2.71;
内存中会分配两块4字节的空间存储这两个值。swap函数接收的是这两个变量的地址(指针),通过解引用操作直接修改内存中的值,而不是像传值调用那样只操作副本。
关键理解:指针传递的是内存地址,解引用操作(*px)就是通过地址直接访问内存单元。这是实现真正交换的基础。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 完整函数实现与解析
2.1 swap函数标准实现
c复制void swap(float *px, float *py) {
float temp = *px; // 步骤1:保存第一个变量的值
*px = *py; // 步骤2:将第二个值赋给第一个变量
*py = temp; // 步骤3:将保存的原始值赋给第二个变量
}
2.2 各步骤内存变化详解
-
float temp = *px:- 创建临时变量temp
- 读取px指向的内存值(假设地址0x1000存着3.14)
- temp被赋值为3.14
-
*px = *py:- 读取py指向的值(假设地址0x1004存着2.71)
- 将该值写入px指向的地址(0x1000现在变为2.71)
-
*py = temp:- 将temp的值3.14写入py指向的地址(0x1004)
- 完成交换
3. 主函数验证方案设计
3.1 基础验证代码
c复制#include <stdio.h>
int main() {
float x = 10.5f;
float y = 20.8f;
printf("交换前: x=%.2f, y=%.2f\n", x, y);
swap(&x, &y); // 注意要传地址
printf("交换后: x=%.2f, y=%.2f\n", x, y)
