我检查过自己,我写了一个这样的程序
int main() {
int i;
cout << i;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我运行了几次程序,结果一直都是一样的,零.我在C中尝试过,结果是一样的.
但我的教科书说
如果不初始化在函数内定义的变量,则变量值保持未定义.这意味着该元素将采用先前驻留在内存中该位置的任何值.
当程序总是为变量分配空闲内存位置时,这怎么可能?怎么可能是零以外的东西(我假设默认的空闲内存值为零)?
我一直在阅读很多关于为什么全局变量是坏的以及为什么不应该使用它们的原因.然而,大多数常用的编程语言都以某种方式支持全局变量.
所以我的问题是,仍然需要全局变量的原因是什么,它们是否提供了一些无法实现的独特且不可替代的优势?与用户指定的自定义间接相比,从本地范围中检索对象时,全局寻址是否有任何好处?
据我所知,在现代编程语言中,全局寻址与计算内存地址的每个偏移具有相同的性能损失,无论是从"全局"用户内存的开头偏移还是从一个this或任何一个偏移其他指针.因此,就性能而言,用户可以在使用公共指针间接所需的狭窄情况下伪造全局变量,而不会损失实际全局变量的性能.还有什么?真的需要全局变量吗?
为什么打印32767(或其他随机数)?什么是std::cout印刷品?为什么不NULL(或0)?
int main()
{
int a;
std::cout << a;
}
Run Code Online (Sandbox Code Playgroud)