- Initializer
C++ Primer上说:如果未初始化的Built-in type是定义在function外部的,那么它将自动被初始化为“0”;如果uninitialized的built-in type对象是定义在function内部的,那么它就是undefined的,那么,对它拷贝和访问就都是错误的。
观察下面这段汇编程序:
同样是变量,"int i"就没有相应的汇编代码。而当将j的值赋值给i的时候,是从内存的A1F320h地址取出的dword大小的值:
function外部的全局变量并非存储在栈空间上,而是在其它某处存放着。
- Scope
我们可以观察下面reused的使用:
第一个将reused赋值给变量b,这里使用的是从内存某个地址中取出一个数:
这个形式的赋值可以看出使用的是全局变量,当然了,因为到这里时,函数中的局部的reused还没有定义,所以这里使用的肯定是全局的
再来看下面的int reused = 0,这里就是新定义了一个局部变量,当我们再使用reused赋值的时候,使用的就是这个局部的reused(局部的reused覆盖掉了全局的reused):
此时由于有了局部的reused的存在,如果我们再想使用全局的reused,就必须加上scope operator: