全局变量是在所有函数体的外部定义的,程序的所在部分(甚至其它文件中的代码)都可以使用。全局变量不受作用域的影响(也就是说,全局变量的生命期一直到程序的结束)。如果在一个文件中使用
extern关键字来声明另一个文件中存在的全局变量,那么这个文件可以使用这个数据。
在多文件组成的程序里,全局变量与全局静态变量是不同的。在某一层次声明的变量的作用域就终止于该变量所在层次的末尾。唯一的区别是全局静态变量使得该变量成为定义该变量的源文件所独享。如果在一个文件中使用
extern关键字来声明另一个文件中存在的静态全局变量,这个文件也不能够使用这个数据。
根据ANSI C++的标准,在for语句头中声明的变量的作用域的确应该在for语句的末尾结束。然而较旧版本的VC++(现在主流使用的版本基本都符合)却没有完全符合这个标准,它认为for语句头中声明的变量作用域到包含该for语句的最小语句块结束。尽管如此,我们还是应该按照ANSI C++标准来认知变量的作用域。