You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在函数中修改指针参数指向的int变量值?

在函数中通过指针修改int变量的值

嘿,作为编程新手对指针犯迷糊太正常了——我当初刚学C的时候,对着指针的星号和取地址符号挠了好半天头!别担心,咱们一步步把这个事儿说清楚,保证你看完就能搞明白。

首先得搞懂一个核心问题:如果直接把int变量传给函数,函数拿到的只是这个变量的副本。你在函数里修改副本的值,原变量根本不会变。比如这个错误示例:

#include <stdio.h>

void wrong_change(int num) {
    num = 10; // 这里改的只是函数内部的临时副本
}

int main() {
    int my_num = 5;
    wrong_change(my_num);
    printf("my_num的值是:%d\n", my_num); // 输出还是5,原变量没被修改
    return 0;
}

那要怎么才能修改原变量呢?这时候就需要指针登场了——咱们要把变量的内存地址传给函数,让函数能直接操作这个地址里存储的值。具体步骤是这样的:

  1. 定义函数时,把参数类型设为int*(int类型的指针),表示这个参数接收的是一个int变量的地址。
  2. 在调用函数时,用&运算符(取地址符)把目标变量的地址传进去。
  3. 在函数内部,用*运算符(解引用符)访问指针指向的内存地址,修改里面的值——这时候修改的就是原变量本身了。

来看正确的示例代码:

#include <stdio.h>

void correct_change(int *ptr) {
    // *ptr表示访问指针ptr指向的内存地址里的内容
    *ptr = 10; // 这里修改的就是原变量的值
}

int main() {
    int my_num = 5;
    // &my_num拿到my_num的内存地址,传给correct_change函数
    correct_change(&my_num);
    printf("my_num的值是:%d\n", my_num); // 输出10,原变量被成功修改
    return 0;
}

再给你划几个关键要点:

  • &变量名:获取这个变量在内存中的地址,相当于给函数指了个路,告诉它“我要改的是这个地方的内容”。
  • *指针变量:解引用操作,意思是“去这个指针指向的地址里,操作里面的数据”。你可以把指针想象成一个装着家门地址的信封;解引用就是根据这个地址找到你家,然后修改家里的东西。

多写几遍这样的代码,慢慢就能get到指针的逻辑了——刚开始绕很正常,练几次就顺了!

内容的提问来源于stack exchange,提问作者victory

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:47:52