如何更改 C 中作为参数传递的变量的值? 我试过这个:
void foo(char *foo, int baa){
if(baa) {
foo = "ab";
} else {
foo = "cb";
}
}
并调用:
char *x = "baa";
foo(x, 1);
printf("%s\n", x);
但它打印baa
为什么?
提前致谢。
最佳答案
您想要更改 char*
指向的位置,因此您需要在 foo()
中接受一个参数,还有一个间接级别;一个 char**
(指向 char
指针的指针)。
因此 foo()
将被重写为:
void foo(char **foo /* changed */, int baa)
{
if(baa)
{
*foo = "ab"; /* changed */
}
else
{
*foo = "cb"; /* changed */
}
}
现在,当调用 foo()
时,您将使用地址运算符 (&
):
foo(&x, 1);
错误代码段打印 baa
的原因是因为您只是为 local 变量 char *foo
分配了一个新值,这与x
无关。因此,x
的值永远不会被修改。
关于c - 如何更改作为参数传递的变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49126991/