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

如何在C语言函数中使用指针修改变量的值

用C语言函数指针修改变量原始值的正确实现

你的代码无法修改main函数中变量i的原始值,核心原因是传值调用:传给change函数的是变量i的副本,函数内部修改的只是这个副本的内容,和main里的原变量没有关联。要实现修改原始值,需要用传址调用,也就是把变量的地址传给函数,让函数通过指针直接操作原变量的内存空间。

修改后的完整代码

#include <stdio.h>
#include <stdlib.h>

// 函数参数改为指针类型,接收变量的地址
void change(int *i)
{
    printf("%d\n", *i); // 解引用指针,获取原变量的值
    *i = 7; // 解引用指针,修改原变量的内容
    printf("%d\n", *i);
} 

int main()
{
    int i = 66; 
    change(&i); // 传入变量i的地址
    printf("%d\n", i); // 此时原变量的值已经被修改为7
    return 0;
}

关键改动说明

  • 函数定义:将change(int i)改为void change(int *i),参数类型从int改为int*(指针类型),让函数能接收变量的地址;同时补充返回类型void,符合C语言语法规范。
  • 调用函数:change(i)改为change(&i),&i是取变量i的内存地址,把这个地址传递给函数。
  • 函数内部操作:用*i解引用指针,直接访问并修改原变量的内存空间,而非操作副本。

运行这段代码,输出结果为:

66
7
7

能看到main函数里的变量i已被成功修改为7。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 04:55:32