我知道有时候如果你不初始化一个int
,如果你打印整数,你会得到一个随机数。
但是将所有内容初始化为零似乎有点愚蠢。
我问是因为我正在评论我的 C 项目并且我在缩进上非常直接并且它完全编译(90/90 谢谢 Stackoverflow)但我想在样式点上获得 10/10。
那么,问题是:什么时候初始化合适,什么时候应该只声明一个变量:
int a = 0;
对比
int a;
最佳答案
有几种情况你不应该初始化一个变量:
- 当它具有静态存储持续时间(
static
关键字或全局变量)并且您希望初始值为零时。如果您显式初始化,大多数编译器实际上会在二进制文件中存储零,这通常只是浪费空间(对于大型数组可能是巨大的浪费)。 - 当您立即将变量的地址传递给另一个填充其值的函数时。在这里,初始化只是浪费时间,并且可能会让代码的读者感到困惑,他们想知道为什么要将某些内容存储在即将被覆盖的变量中。
- 在后续代码完成执行之前无法确定变量的有意义的值。在这种情况下,使用虚拟值(例如零/NULL)初始化变量是非常有害的,因为如果您有一些代码路径从未分配有意义的值,这会防止编译器警告您。编译器擅长警告您访问未初始化的变量,但无法警告您“仍包含虚拟值”变量。
除了这些问题,我想说的是,在可能的情况下初始化非静态变量通常是一种很好的做法。
关于c - 在 C 中初始化变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7975008/