在C语言中,static
关键字用于声明一个变量或函数,使其具有静态存储期
- 局部静态变量:局部静态变量是在函数内部声明的静态变量。它们的生命周期贯穿整个程序执行期间,但它们的作用域仍然局限于定义它们的函数。局部静态变量在程序的生命周期内只初始化一次,通常在程序启动时进行初始化。它们存储在静态存储区。
void function() { static int local_static_var = 0; // ... }
- 全局静态变量:全局静态变量是在函数外部声明的静态变量。它们的生命周期和作用域都局限于定义它们的源文件。全局静态变量只在定义它们的源文件中可见,其他源文件无法访问。它们也存储在静态存储区。
static int global_static_var = 0; void function() { // ... }
- 静态函数:静态函数是在函数外部声明的,并使用
static
关键字修饰的函数。它们的生命周期贯穿整个程序执行期间,但它们的作用域局限于定义它们的源文件。静态函数只能在定义它们的源文件中被调用,其他源文件无法访问。静态函数的代码存储在代码段中。
static void static_function() { // ... } void function() { // ... }
总结:在C语言中,static
关键字用于控制变量和函数的生命周期和作用域。静态变量和静态函数的内存分配在静态存储区,而局部静态变量在栈上分配内存。静态变量和静态函数的初始化发生在程序启动时。