在C中初始化char和string变量

时间:2017-03-27 02:16:34

标签: c initialization scanf

noob here

我一直在研究如何在C中初始化变量。我得出结论,始终初始化变量是一种好习惯。但是,我没有找到关于如何来初始化变量的明确答案。例如,如何初始化char和字符串?当然你可以根据需要初始化它们,但是使用什么是零/空值很好?

int a = 0;
char b = ?;
char c[] = ???;

此外,如果您在基本程序中声明和定义变量然后使用scanf()从用户获取值,那该怎么办?在使用scanf()之前是否还要初始化变量?

提前谢谢。

2 个答案:

答案 0 :(得分:5)

使用零/虚拟/空白值初始化变量是一种应该避免的不良做法。它不仅没有意义,它还可以防止现代编译器运行时代码清理工具检测到对未分配正确值的变量的读访问。

在现代C中,您可以在可执行代码中的任何位置声明变量。此功能的最大好处是几乎总是可以使用有意义的值初始化此类变量,而不仅仅是零/虚拟/空白值。利用这一点。努力在本地声明您的变量,您可以立即使用有意义的值初始化它们。

在极少数情况下,当您没有有意义的值来初始化变量时,最好不要将其保留为未初始化,而不是将其初始化为零。本指南中有例外,但它们很少见。

答案 1 :(得分:1)

一般来说,如果变量在声明之后但在读取之前的某个时刻无条件地赋予它一个值,则不需要对其进行初始化。您传递给scanf()的变量地址的示例是不需要初始化的变量的一个很好的示例。

如果变量需要某种默认值,那么当您需要初始化它时。如果您发现变量在写入之前已被读取,则表明需要对其进行初始化。