C++语言程序设计

5.6.2 局部变量和全局变量
我们已经知道了什么叫全局变量，什么叫局部变量。一个应用程序可能包含多个源文件，而一个源文件可能包含多个函数。一般说来，全局变量的作用范围是定义点起至文件结束为止，局部变量的作用范围是从定义点起至该局部变量所在块的尾部为止。变量的存储期也限制在其作用域内。例如：全局变量的存储期与应用程序的生存期相同，局部变量是在进入作用域时创建，而在退出作用域时被销毁。
一、局部变量
由于局部变量的存储期是是在其所在的局部作用域内，其内存也是由系统自动分配的，所以，它也被称为自动变量。可以用一个关键字auto显式指定一个变量是自动变量。例如：
void Foo (void)
{
auto int xyz; // 等价于int xyz;
//...
}
一般说来，我们很少使用auto关键字。因为C++中，局部变量默认为自动变量。
我们已经知道，变量是存放在内存中。如果程序对一些频繁使用的变量（如循环变量），要求更高的访问效率，可以把这些变量保存在寄存器中，保存在寄存器中的变量，我们也称之为寄存器变量。
寄存器变量也是局部变量，定义寄存器变量需要用register关键字，例如：
for (register int i = 0; i < n; ++i)
sum += i;
需要注意的是：有时我们用register关键字定义了寄存器变量，编译器也可能不把该变量放在寄存器中，而放在内存中。因为机器的寄存器个数是有限，当我们申请寄器存放变量时，可能所有的寄存器都在被使用中。