🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!
📙C 语言百万年薪修炼课程 通俗易懂,深入浅出,匠心打磨,死磕细节,6年迭代,看过的人都说好。
C 语言中的静态变量和全局变量的区别
在 C 语言中,静态变量(Static Variables)和全局变量(Global Variables)是两种具有不同特性和用途的变量类型。理解它们之间的区别对于编写高效、可靠和可维护的 C 程序至关重要。
一、存储位置
- 全局变量
全局变量存储在静态存储区,程序在编译时就为其分配了存储空间,并且在程序的整个运行期间都存在。 - 静态变量
静态变量也存储在静态存储区,同样在编译时分配存储空间。
二、作用域
- 全局变量
全局变量的作用域是从其定义的位置开始,到整个源文件结束。在其他源文件中,如果要使用全局变量,需要使用extern
关键字进行声明。 - 静态变量
- 静态局部变量:其作用域仅限于定义它的函数内部。但与普通的局部变量不同,静态局部变量在函数调用结束后不会被销毁,其值会被保留,下次函数调用时可以继续使用。
- 静态全局变量:其作用域仅限于定义它的源文件内部,在其他源文件中不可见。
三、生命周期
- 全局变量
全局变量的生命周期与整个程序的运行周期相同,从程序开始执行到程序结束。 - 静态变量
静态变量的生命周期也与整个程序的运行周期相同,无论是静态局部变量还是静态全局变量。
四、初始化
- 全局变量
全局变量如果没有进行显式的初始化,系统会将其初始化为 0 (对于数值型变量)、NULL
(对于指针变量)或者空字符'\0'
(对于字符型变量)。 - 静态变量
- 静态局部变量:如果没有进行显式的初始化,系统会将其初始化为 0 (对于数值型变量)、
NULL
(对于指针变量)或者空字符'\0'
(对于字符型变量)。 - 静态全局变量:与全局变量相同,如果没有显式初始化&#
- 静态局部变量:如果没有进行显式的初始化,系统会将其初始化为 0 (对于数值型变量)、