【发布时间】:2020-09-27 19:11:40
【问题描述】:
我知道肯定有重复,但我什么也没找到。在 C 语言中,我看到很多代码示例,其中作者只在变量声明后赋值,这样做有充分的理由吗?
int main(void)
{
int x; // declare "x"
x = 5; // assign 5 to "x"
return 66;
}
这与仅在一行中声明和分配值有什么不同?
int main(void)
{
int x = 5; // declare "x" and assign in the same line
return 66;
}
【问题讨论】:
-
最后的效果是一样的。而
int x;不是声明,而是定义。 -
@ArkadiuszDrabczyk 那么什么是声明?
-
第二种变体(在定义站点进行初始化)风险较小。即使定义和赋值现在彼此相邻(如第一个示例所示),未来的代码程序员可能会在其间添加其他语句,然后使用未初始化变量的风险增加。所以我推荐第二种变体。但这仍然是个人喜好和主观的问题。
-
对于局部变量,像
int x;这样的东西既是一个声明(它将名称x作为int类型的变量引入编译器)和一个定义(它告诉编译器认为变量x需要在运行程序中为其分配空间)。对于全局变量,必须处理单独的声明、定义和tentative definitions。 -
它们是一样的。第一种方式更老式:在 C89 中,您必须在函数的开头声明所有变量,因此通常在不赋值的情况下声明。