static全局变量和非static全局变量
时间: 2023-11-09 13:05:58 浏览: 108
静态全局变量(static global variable)和非静态全局变量(non-static global variable)是在程序的任何地方都能够访问的全局变量。
静态全局变量具有以下特点:
1. 在声明它的文件中可以被访问,但是在其他文件中不可见。
2. 生命周期从程序开始到程序结束,即使在它的作用域外,其值也会保持不变。
3. 在内存中只有一份拷贝,多个文件中对该变量的引用都指向同一块内存。
非静态全局变量具有以下特点:
1. 在声明它的文件中和其他文件中都可以被访问。
2. 生命周期从程序开始到程序结束,即使在它的作用域外,其值也会保持不变。
3. 在内存中只有一份拷贝,多个文件中对该变量的引用都指向同一块内存。
总结来说,静态全局变量只能在声明它的文件中被访问,而非静态全局变量可以在整个程序中被访问。而且它们的生命周期都是从程序开始到程序结束,并且在内存中只有一份拷贝。
相关问题
static全局变量与非static 全局变量的区别于优缺点
static全局变量和非static全局变量都是全局变量,它们的作用域和生命周期都是整个程序运行期间,但是它们之间有以下几个区别:
1. 作用域不同:非static全局变量的作用域是整个程序文件,而static全局变量的作用域只限于定义它的文件内。
2. 生命周期不同:非static全局变量的生命周期和程序的运行周期相同,而static全局变量的生命周期是整个程序运行期间,即使在其作用域之外也可以访问。
3. 初始化时机不同:非static全局变量在程序运行前就会被初始化,而static全局变量在第一次使用时才会被初始化。
优缺点:
1. 非static全局变量可以在多个文件中共享,方便数据共享,但是可能会被意外的修改,导致程序出现问题。
2. static全局变量只能在定义它的文件内访问,可以提高程序的安全性,但是无法实现数据共享。
3. 非static全局变量在程序启动时就会被初始化,可能会占用大量的内存空间,而static全局变量只有在使用时才会被初始化,可以减少内存占用。
4. 使用static全局变量可以提高程序的效率,因为它的作用域和生命周期都比非static全局变量小,可以减少内存的访问次数和内存的频繁申请与释放,从而提高程序的运行效率。
static 全局变量和普通全局变量的区别
static全局变量和普通全局变量的主要区别在于它们的作用域。普通全局变量的作用域为整个程序,而static全局变量的作用域仅限于定义它的源文件。
此外,static全局变量还有一个特点,即只被初始化一次,即使定义它的函数或者语句块被多次调用或执行,它也只会被初始化一次。
另外需要注意的是,static全局变量对于其他文件是不可见的,因此其他文件不能直接访问它,除非在该文件中提供了访问它的函数。
阅读全文