如何在函数中修改指针参数指向的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; }
那要怎么才能修改原变量呢?这时候就需要指针登场了——咱们要把变量的内存地址传给函数,让函数能直接操作这个地址里存储的值。具体步骤是这样的:
- 定义函数时,把参数类型设为
int*(int类型的指针),表示这个参数接收的是一个int变量的地址。 - 在调用函数时,用
&运算符(取地址符)把目标变量的地址传进去。 - 在函数内部,用
*运算符(解引用符)访问指针指向的内存地址,修改里面的值——这时候修改的就是原变量本身了。
来看正确的示例代码:
#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
相关产品推荐
相关产品推荐

