向函数传递指针
本课属于 Coddy C 学习旅程的“逻辑与流程”单元。第 26 课,共 63 课。
现在你已经了解了按值传递的局限性,接下来我们来看看向函数传递指针如何解决这个问题。你可以把变量的内存地址传递给函数,而不是传递变量值的副本。
将指针传递给函数时,函数就能访问原始变量在内存中的位置。这意味着函数可以直接处理原始数据,而不只是它的副本。
void processValue(int *ptr) {
// ptr 保存着原变量的地址
// 函数现在可以访问该内存位置
}
int main() {
int x = 10;
processValue(&x); // 传入 x 的地址
return 0;
}注意,在调用函数传递变量的地址时,我们使用取地址运算符 &。函数参数声明为 int *ptr,这表示它需要接收一个指向整数的指针。这项基础技巧为函数与程序中的数据交互提供了强大的可能性。
挑战
简单编写一个 C 程序,演示如何将指针传递给函数。你的程序应执行以下操作:
- 创建一个名为
displayValue的函数,该函数接收一个指向整数的指针作为参数 - 在
displayValue函数中,使用解引用运算符访问内存地址中的值,并按以下格式打印:Value at address: [value] - 在
main函数中,声明一个名为number的整型变量,并将其初始化为值 42 - 按以下格式打印原始值:
Original value: [value] - 调用
displayValue函数,并使用取地址运算符传递number变量的地址 - 函数调用后,打印确认消息:
Function call completed
你的输出应演示该函数成功接收并访问了原始变量的内存地址:
Original value: 42
Value at address: 42
Function call completed这个挑战介绍了将指针传递给函数这一基础概念,这样函数就能访问原始变量的内存位置,而不是使用变量值的副本。
亲手试试
#include <stdio.h>
// TODO:在这里编写你的 displayValue 函数
int main() {
// TODO:在这里编写你的代码
// 1. 声明并初始化 number 变量
// 2. 打印原始值
// 3. 调用 displayValue 函数
// 4. 打印完成消息
return 0;
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: C 在线编译器