gpt4 book ai didi

c - 夹板:定义前使用的局部变量

转载 作者:太空狗 更新时间:2023-10-29 15:25:36 27 4
gpt4 key购买 nike

我知道局部变量在未设置时可以具有“随机”值,但是用指针设置局部变量的第一个值是否不好?例如:

void setValue(int* p_val)
{
*p_val = …; /* Assignment does not use *p_val */
}

int main(void)
{
int val;
setValue(&val);
printf("%d", val);
return 0;
}

其中 setValue 仅设置而从不读取引用变量的值。 Splint 警告我 val 是“在定义之前使用的”,我对这个警告有点惊讶,因为我相信 val 的值是在执行 printf 和使用 val 之前设置的。夹板是否不够先进,无法识别用于设置初始值的引用?

最佳答案

如果 setValue(&val); 确实通过指针引用将 val 分配给某物,那么您的代码的行为已定义,并且分析工具不正确。

但是,如果您可以避免变量处于未初始化状态(没有多余的赋值),那将是更可取的。是否可以重构为

int val = setValue();

说?

关于c - 夹板:定义前使用的局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47594267/

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