c语言关于使用函数操作变量但是无效的问题 最后更新时间:2024年10月11日 ### 问题描述 用c练习开发的过程中,简化了一些代码,结果发现原本能够运行的代码发生了失效的情况。 示例: ```c #include #include void test(int a){ a += 1; } int main(int argc, char *argv[]){ int b=1; test(b); printf("my test test result : %d\n",b); } ``` 输出结果: ```shell > my test test result : 1 ``` ### 问题原因 C 语言中的函数参数是按值传递的,所以 test 函数中的 a 和 a 实际上是主函数中对应变量b的副本。因此,对它们的修改不会影响主函数中的原始变量。 ### 解决思路 采用指针开辟空间,通过操作内存的实际值的方法操作数据 示例: ```c #include #include void test(int* a){ *a += 1; } int main(int argc, char *argv[]){ int* b=(int*)malloc(sizeof(int)); *b = 1; test(b); printf("my test test result : %d\n",*b); free(b); return 0; } ``` 输出结果: ```shell > my test test result : 2 ```
Comments | NOTHING