全局变量和静态全局变量的区别

来源:互联网 发布:热门网游有mac版吗 编辑:程序博客网 时间:2024/05/01 09:04
       全局变量也称为外部变量,它是在函数外部定义的变量。 它不属于哪一个函数,它属于一个源程序文件。其作用域是从定义该变量的位置开始至源文件结束。
全局变量是在所有函数体的外部定义的,程序的所在部分(甚至其它文件中的代码)都可以使用。全局变量不受作用域的影响(也就是说,全局变量的生命期一直到程序的结束)。如果在一个文件中使用extern关键字来声明另一个文件中存在的全局变量,那么这个文件可以使用这个数据。
       在全局变量前加一个static,使该变量只在这个源文件中可用,称之为全局静态变量,全局静态变量就是静态全局变量。
       在多文件组成的程序里,全局变量与全局静态变量是不同的。在某一层次声明的变量的作用域就终止于该变量所在层次的末尾。唯一的区别是全局静态变量使得该变量成为定义该变量的源文件所独享。如果在一个文件中使用extern关键字来声明另一个文件中存在的静态全局变量,这个文件也不能够使用这个数据。
作用域的例外:
       根据ANSI C++的标准,在for语句头中声明的变量的作用域的确应该在for语句的末尾结束。然而VC++却没有完全符合这个标准,它认为for语句头中声明的变量作用域到包含该for语句的最小语句块结束。尽管如此,我们还是应该按照ANSI C++标准来认知变量的作用域。
0 0
原创粉丝点击