在许多语言中,您可以在初始化变量之前声明并使用它。
例如,在 C++ 中,您可以编写如下代码片段:
int x;
cout << x;
这当然会返回不可预测的(好吧,除非你知道你的程序是如何映射内存的)结果,但我的问题是,为什么编译器允许这种行为?
允许使用未初始化的内存是否有一些应用或效率?
编辑:我突然想到,将初始化留给用户会最大限度地减少对生命周期有限(写入周期)的内存介质的写入。只是上述“性能”标题下的一个具体示例。谢谢。
最佳答案
我的想法(我以前错了,问问我的妻子吧)是它只是该语言早期版本的遗留物。
C 的早期版本不允许您在函数中任何您想要的位置声明变量,它们必须位于顶部(或者可能位于 block 的开头,很难记住我的头顶,因为我现在很少这样做了)。
此外,只有当您知道变量应该是什么时,您才会有设置变量的愿望,这是可以理解的。如果您接下来要做的只是覆盖该值(这就是人们从这里获得性能的地方),那么将变量初始化为某个东西是没有意义的。
这就是为什么有必要允许未初始化的变量,尽管在初始化它们之前你仍然不应该使用它们,并且好的编译器会发出警告让你知道.
在 C++(以及后来的 C 版本)中,您可以在函数的任何位置创建变量,您确实应该同时创建并初始化它。但这在早期是不可能的。你必须使用类似的东西:
int fn(void) {
int x, y;
/* Do some stuff to set y */
x = y + 2;
/* Do some more stuff */
}
现在,我会选择:
int fn(void) {
int y;
/* Do some stuff to set y */
int x = y + 2;
/* Do some more stuff */
}
关于c++ - 允许变量未初始化有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3436920/