你的代码演示了 C 语言中**值传递**的特性。在 `test(x)` 函数调用时,`x` 的值被复制到 `test` 函数的参数 `x`,但这不会影响 `main` 函数中的 `x`。
运行结果如下:
调用test前 x=1
test函数内部 x=1024
调用test后 x=1
### **解释**
1. `main` 函数中 `x=1`,然后调用 `test(x)`,此时 `x` 的值被复制给 `test` 函数的参数 `x`。
2. `test` 函数内部修改了 `x=1024`,但这个 `x` 只是 `test` 函数的局部变量,不影响 `main` 里的 `x`。
3. `test` 结束后,`main` 里的 `x` 仍然是 `1`,所以最后的 `printf` 仍然输出 `1`。
### **如何修改 `x` 的值?**
如果想在 `test` 函数中修改 `main` 里的 `x`,可以使用**指针**传递变量地址:
#include <stdio.h>
void test(int *x){
*x = 1024;
printf("test函数内部 x=%d
", *x);
}
int main()
{
int x = 1;
printf("调用test前 x=%d
", x);
test(&x);
printf("调用test后 x=%d
", x);
return 0;
}
这样 `test` 通过指针修改 `x`,`main` 里的 `x` 也会被改变,运行结果如下:
调用test前 x=1
test函数内部 x=1024
调用test后 x=1024
这样就实现了**引用传递**的效果!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |