static全局变量与普通的全局变量的区别

(1)static全局变量与普通的全局变量有什么区别?
(2)static局部变量和普通局部变量有什么区别?
(3)static函数与普通函数作用域有什么不同?
(4)static函数与普通函数有什么区别?

(1)static全局变量与普通的全局变量有什么区别?
答:全局变量的说明之前再加以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。
(2)static局部变量和普通局部变量有什么区别?
答:static局部变量只被初始化一次,下一次依据上一次结果值;
(3)static函数与普通函数作用域有什么不同点?
答:仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件。
(4)static函数与普通函数有什么区别?
答:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝程序的局部变量存在于(堆栈)中,全局变量存在于(静态区)中,动态申请数据存在于(堆)中。

时间: 2024-10-12 12:55:28

static全局变量与普通的全局变量的区别的相关文章

static全局变量与普通全局变量的区别?static局部变量与普通局部变量的区别?static全局函数与普通全局函数的区别?

1.static全局变量只初使化一次,防止在其他文件单元中被引用; 2.static局部变量只被初始化一次,下一次依据上一次结果值: 3.static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝 C语言中讲讲static变量和static函数有什么作用static关键字有两种意思,你看上下文来判断 1,表示变量是静态存储变量 表示变量存放在静态存储区. 2,表示该变量是内部连接 (这种情况是指该变量不在任何{}之内,就象全局变量那样,这时候加上static) ,也就是说在其它的.cp

static与全局与局部变量的区别

转自:http://www.cnblogs.com/lzjsky/archive/2010/11/19/1882064.html 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量.全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式. 这两者在存储方式上并无不同.这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的. 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效,

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

全局变量具有外部连接性,即同一工程中其它文件中的也可引用. 而静态变量不具有外部连接性,即同一工程中其它文件中不可以引用. 如: //cpp1.cpp extern int x=10; static int y=5; //cpp2.cpp #include <iostream.h> void main() { extern int x; extern int y; cout<<x<<endl; cout<<y<<endl; } 将这两个文件放在同

C++ static 、extern以及全局变量之间的相关逻辑

全局变量,就是指那些定义在函数之外的变量,当然也是定义在类之外的变量. (1)全局变量会被自动初始化,函数中的变量不会被自动初始化,类中定义的那些成员变量(内建)也不会自动初始化.那么这里有一个疑问,为什么要这样设置?并且为什么,在进程内存区中,分为初始化了的全局变量.静态变量,和未初始化的全局.静态变量. (2)全局变量如果加上static关键字,事情将会变得很奇妙. 我们知道,全局变量理论上是指应用程序级别的全局.普通的全局变量是面向整个程序的,当各个文件各自编译,然后链接成一个可执行程序之

C语言中全局变量、局部变量、静态全局变量、静态局部变量的区别 (转)

1.C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种: 全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域. 从作用域看: 1>全局变量具有全局作用域.全局变量只需在一个源文件中定义,就可以作用于所有的源文件.当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量. 2>静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有的函数都是可见的,而

JAVA基础之局部变量与全局变量以及成员变量的区别

局部变量 定义:在方法内定义的变量称为"局部变量"或"临时变量",方法结束后局部变量占用的内存将被释放. 全局变量 定义:全局变量,又称"外部变量",它不是属于哪个方法,作用域从定义的地址开始到源文件结束. 注意事项: 当局部变量与全局变量重名时,起作用的是局部变量. 成员变量 定义:在类体的变量部分中定义的变量,也称为字段. 区别: java中没有全局变量的定义,这是C中的例: class Demo{ int x;// 非静态成员变量,又称为属

php7中之局部变量,全局变量,超全局变量用法和区别

我们在使用php函数得时候遇到 ,局部变量,全局变量,超全局变量,如何灵活运用,php7中之局部变量,全局变量,超全局变量用法和区别? 1,局部变量 局部变量是在函数体内得变量,不能用外部得变量得值,只有当局部变量得值定义为全局变量才能使用外部变量得值 $a=1 function jj() { echo $a; } jj(); 2.全局变量 申明在函数外得变量,可以全局使用,使用关键词 global //global $a;$a="www.96net.com.cn";function

PHP中的全局变量global和$GLOBALS的区别

1.global Global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件. 但是在函数体内定义的global变量,函数体内可以使用,在函数体外定义的global变量不能在函数体内使用,具体看下面示例. (1)在函数体内定义global变量,函数体内可以使用. <?PHP $a=123; function aa() { Global $a; //把$a定义为global变量. echo $a; //调用函数体外的变量

VC和gcc在保证函数static变量线程安全性上的区别

VC和gcc不同,不能保证静态变量的线程安全性.这就给我们的程序带来了很大的安全隐患和诸多不便.这一点应该引起我们的重视!尤其是在构造函数耗时比较长的时候,很可能给程序带来意想不到的结果.本文从测试代码开始,逐步分析原理,最后给出解决方案. 多线程状态下,VC不能保证在使用函数的静态变量的时候,它的构造函数已经被执行完毕,下面是一段测试代码: class TestStatic { public: TestStatic() { Sleep(1000*10); m_num = 999; } publ