C 语言指针与函数的高级应用与底层原理
💡 学习目标:掌握指针作为函数参数、返回值的使用方法,理解函数指针的定义与调用逻辑,熟练运用指针函数和函数指针解决模块化开发问题。 💡 学习重点:指针参数的地址传递机制、指针函数的实现与应用、函数指针的定义与回调函数实战、指针与函数的内存底层逻辑。
50.1 指针作为函数参数:地址传递的核心原理
在 C 语言中,函数参数传递分为值传递和地址传递。值传递仅传递变量的副本,无法修改原变量;而地址传递通过指针直接操作原变量的内存地址,是实现函数修改外部变量的核心手段。
50.1.1 值传递与地址传递的对比
我们通过一个'交换两个整数'的案例,直观对比两种传递方式的差异:
#include <stdio.h>
// 方式 1:值传递 - 无法交换原变量
void swap_value(int a, int b) {
int temp = a;
a = b;
b = temp;
}
// 方式 2:地址传递 - 可以交换原变量
void swap_addr(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 10, y = 20;
printf("交换前:x = %d, y = %d\n", x, y);
// 值传递调用
swap_value(x, y);
printf("值传递交换后:x = %d, y = %d\n", x, y);
// 地址传递调用
swap_addr(&x, &y);
printf("地址传递交换后:x = %d, y = %d\n", x, y);
return 0;
}


