通过指针修改变量
本课属于 Coddy C 学习旅程的“逻辑与流程”单元。第 27 课,共 63 课。
现在,你可以发挥指针的真正威力:通过函数修改原始变量。将指针传递给函数后,函数可以使用解引用运算符来更改存储在该内存地址中的值。
在函数内部,你使用 * 运算符解引用指针,以访问和修改原始变量的值。这种技术称为按引用传递,因为你传递的是变量在内存中的位置的引用。
void doubleValue(int *ptr) {
*ptr = *ptr * 2; // 解引用以修改原来的值
}
int main() {
int x = 5;
doubleValue(&x); // 传入 x 的地址
// x 现在是 10 了!
return 0;
}关键在于在赋值语句的左侧使用 *ptr,修改指针所持有的内存地址中的值。这样,函数就能永久修改调用函数中的变量,从而实现仅靠按值传递无法实现的强大编程功能。
挑战
简单编写一个 C 程序,通过创建一个将整数值变为三倍的函数,演示如何通过指针修改变量。
你的程序应当:
- 创建一个名为
tripleValue的函数,该函数将指向整数的指针作为参数 - 在
tripleValue函数中,使用解引用运算符将内存地址处的值乘以 3 - 在
tripleValue函数中,按以下格式打印新值:Value tripled to: [value] - 在
main函数中,声明一个名为number的整数变量,并将其初始化为值 8 - 按以下格式打印原始值:
Original value: [value] - 调用
tripleValue函数,并使用取地址运算符传入number变量的地址 - 函数调用后,按以下格式打印
number的最终值:Final value: [value]
你的输出应展示函数如何通过指针成功修改原始变量:
Original value: 8
Value tripled to: 24
Final value: 24这个挑战展示了使用指针按引用传递的强大之处。函数可以通过解引用指针并更改该内存位置的值,永久修改原始变量。
亲手试试
#include <stdio.h>
// TODO: 在这里编写你的 tripleValue 函数
int main() {
// TODO: 在这里编写你的代码
// 声明并初始化 number 变量
// 打印原始值
// 调用 tripleValue 函数
// 打印最终值
return 0;
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: C 在线编译器