温馨提示×

static关键字在C语言中的内存分配

小樊
85
2024-09-12 12:19:09
栏目: 编程语言

在C语言中,static关键字用于声明一个变量或函数,使其具有静态存储期

  1. 局部静态变量:局部静态变量是在函数内部声明的静态变量。它们的生命周期贯穿整个程序执行期间,但它们的作用域仍然局限于定义它们的函数。局部静态变量在程序的生命周期内只初始化一次,通常在程序启动时进行初始化。它们存储在静态存储区。
void function() {
    static int local_static_var = 0;
    // ...
}
  1. 全局静态变量:全局静态变量是在函数外部声明的静态变量。它们的生命周期和作用域都局限于定义它们的源文件。全局静态变量只在定义它们的源文件中可见,其他源文件无法访问。它们也存储在静态存储区。
static int global_static_var = 0;

void function() {
    // ...
}
  1. 静态函数:静态函数是在函数外部声明的,并使用static关键字修饰的函数。它们的生命周期贯穿整个程序执行期间,但它们的作用域局限于定义它们的源文件。静态函数只能在定义它们的源文件中被调用,其他源文件无法访问。静态函数的代码存储在代码段中。
static void static_function() {
    // ...
}

void function() {
    // ...
}

总结:在C语言中,static关键字用于控制变量和函数的生命周期和作用域。静态变量和静态函数的内存分配在静态存储区,而局部静态变量在栈上分配内存。静态变量和静态函数的初始化发生在程序启动时。

0