如何在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
相关产品推荐
相关产品推荐

