Menu
CoddyTech

向函数传递指针

本课属于 Coddy C 学习旅程的“逻辑与流程”单元。第 26 课,共 63 课。

现在你已经了解了按值传递的局限性,接下来我们来看看向函数传递指针如何解决这个问题。你可以把变量的内存地址传递给函数,而不是传递变量值的副本。

将指针传递给函数时,函数就能访问原始变量在内存中的位置。这意味着函数可以直接处理原始数据,而不只是它的副本。

void processValue(int *ptr) {
    // ptr 保存着原变量的地址
    // 函数现在可以访问该内存位置
}

int main() {
    int x = 10;
    processValue(&x);  // 传入 x 的地址
    return 0;
}

注意,在调用函数传递变量的地址时,我们使用取地址运算符 &。函数参数声明为 int *ptr,这表示它需要接收一个指向整数的指针。这项基础技巧为函数与程序中的数据交互提供了强大的可能性。

challenge icon

挑战

简单

编写一个 C 程序,演示如何将指针传递给函数。你的程序应执行以下操作:

  1. 创建一个名为 displayValue 的函数,该函数接收一个指向整数的指针作为参数
  2. 在 displayValue 函数中,使用解引用运算符访问内存地址中的值,并按以下格式打印:Value at address: [value]
  3. 在 main 函数中,声明一个名为 number 的整型变量,并将其初始化为值 42
  4. 按以下格式打印原始值:Original value: [value]
  5. 调用 displayValue 函数,并使用取地址运算符传递 number 变量的地址
  6. 函数调用后,打印确认消息: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;
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: C 在线编译器