全局变量,静态全局变量,静态局部变量和局部变量的区别1

如题所述

全局变量、静态全局变量、静态局部变量和局部变量的区别
变量可以分为:全局变量、静态全局变量、静态局部变量和局部变量。
按存储区域分,全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区。
按作用域分,全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。
从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。
static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件
static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;
static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
全局变量和静态变量如果没有手工初始化,则由编译器初始化为0。局部变量的值不可知。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-07-16
局部变量与其它三个有本质区别。
局部变量,定义在函数内,作用域为定义位置,到所在大括号结束。 每次执行到定义语句的时候,系统为该变量分配内存,当作用域结束后,内存被释放。

而另外三个,都是在系统运行时就分配内存,在运行过程中都不会释放,直到程序结束。
也就是说,局部变量和其它三个,最明显的区别:
1 生命周期不同
2 分配时间不同
3 分配位置不同。

而另外三个,在这几项上是相同的,之间的区别在于作用域。
全局变量,作用域为整个项目,不管在哪个文件中,只要声明后都可以使用。
静态全局变量,作用域为定义改变量的所在文件。
而静态局部变量,作用域与普通局部变量一样,都是定义位置到所在大括号结束。本回答被提问者和网友采纳

全局变量,静态全局变量,静态局部变量和局部变量的区别1
全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件...

22、 全局变量、局部变量、静态变量的区别
简单的说静态局部变量与全局变量最明显的区别就在于:全局变量在其定义后所有函数都能用,但是静态局部变量只能在一个函数里面用

请用自己的话解释全局变量与局部变量的区别,静态变量与自动变量的区别...
全部变量就是在整个工程工都可以调用。比如我在一个标准模块中定义了一个全局变量,那么我无论是在窗体1还是窗体2还是其他地方都可以调用它。而局部变量就不行,比如我在某个窗体定义了一个变量,那么这个变量我就只能在这个窗体中使用。 静态变量,就是当我执行完一个过程后,它的值保存下来了。下次...

局部静态变量,全局变量和全局静态变量的区别
也就是说,局部变量和其它三个,最明显的区别:1 生命周期不同2 分配时间不同3 分配位置不同。而另外三个,在这几项上是相同的,之间的区别在于作用域。全局变量,作用域为整个项目,不管在哪个文件中,只要声明后都可以使用。静态全局变量,作用域为定义改变量的所在文件。而静态局部变量,作用域与...

全局变量和局部变量有什么区别
全局变量和局部变量有什么区别如下:1、作用域不同:全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等。2、内存存储方式不同:全局变量存储在全局数据区中,局部变量存储在栈区。3、生命期不同:全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随...

全局变量和局部变量的本质区别
局部变量和全局变量的区别有:定义范围不同,作用域不同、生命期不同。主要表现在:1、定义范围不同,一个是函数体内部,一个是函数外部。2、作用域不同,一个仅限于函数体内容,一个是整个程序。3、生命期不同,全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,...

C#静态全局变量和静态局部变量有什么区别?
生命周期和作用域不一样,全局变量拥有全局生命周期,也就是说这段程序不管什么地方都可以引用;局部变量的话只有在定义的那段代码或者类或者方法内引用,一旦这个方法或者类运行结束,那么这个变量就销毁了

静态变量和局部变量和全局变量的区别
1>全局变量,静态局部变量,静态全局变量都在静态存储区分配空间,而局部变量在栈里分配空间 2>全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量...

局部变量和全局变量的区别是什么?
全局变量和局部变量的区别如下:1. 作用域不同:全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等 2. 内存存储方式不同:全局变量存储在全局数据区中,局部变量存储在栈区 3. 生命期不同:全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随函数...

静态变量和局部变量的区别
两者区别如下:1、存储位置:静态变量和局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区。2、作用域:全局变量和静态全局变量的作用域都是整个源程序,静态全局变量的作用域仅限于定义的文件内,不能作用到其余文件。而局部变量的作用域仅限于定义函数内,函数执行结束后,变量不再存在。3...

相似回答