c语言全局变量加static 全局静态变量使用方法?
全局静态变量使用方法?
静态动态全局变量,又称全局静态变量,是在全局变量前加一个static,使该变量只在这个源文件中用下。
全局变量也被称外部变量,它是在函数外部定义的变量。它都属于哪一个函数,它不属于一个源程序文件。其作用域是从定义方法该变量的位置开始至源文件结束后。
全局变量是在所有函数体的外部定义的,程序的所在部分(甚至其它文件中的代码)都是可以不使用。全局变量不受作用域的影响(也就是说,全局变量的生命期一直在到程序的结束)。假如在一个文件中在用extern关键字来声明两个文件中存在的全局变量,那就这个文件可以不建议使用这个数据。
在多文件混编的程序里,全局变量与全局静态变量是差别的。在某一层次声明的变量的作用域就暂时终止于该变量处层次的末尾。同样的区别是全局静态变量使得该变量蓝月帝国定义该变量的源文件所独享。如果不是在一个文件中使用extern关键字来声明另一个文件中存在地的静态动态全局变量,这个文件也不能使用这个数据。
作用域的例外:
依据ANSIC的标准,在after语句头中声明的变量的作用域确实是应该要在after语句的末尾都结束了。但这较旧版本的VC(现在主流不使用的版本基本是都符合)却没有完全条件这个标准,它其实while语句头中声明的变量作用域到中有该of语句的最小语句块已经结束。即使如此,我们还是应该明确的ANSIC标准来认知观念变量的作用域。
为什么要设置全局变量为0?
全局量在符号表示的时候,编译器会手动接受初始化操作。要是指针就给初始化为NULL,
整型、char型变量就给重新初始化为0
假如你还没有给它赋过值,那就它默认设置是NULL(空)或0
--------------------------------------------
可不知道你怎莫写的。
但下边两个语句最好就是写在.c中。
staticstructdata*ep;
staticstructdata*head;
要是你写在.h中,后再在两个或多个.c中中有了该.件,这样就非常每个.c文件都各自定义了中两个指针。因为static变量的作用域是当前文件。
如果不是要在整个工程不使用改全局量,这样请像下边这样做:
a.c文件:
structdata*ep;
structdata*head;
b.c文件:
externstructdata*ep;
externstructdata*head;
c.c文件:
externstructdata*ep;
externstructdata*head;
其他文件也虽然,那样的话在工程任何地方用这两个指针都应该不会有问题。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。