gpt4 book ai didi

c - 如何更改作为参数传递的变量的值?

转载 作者:行者123 更新时间:2023-11-30 16:33:50 25 4
gpt4 key购买 nike

如何更改 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/49564031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com