溫馨提示×

static關(guān)鍵字在C語言中的內(nèi)存分配

小樊
85
2024-09-12 12:19:09
欄目: 編程語言

在C語言中,static關(guān)鍵字用于聲明一個變量或函數(shù),使其具有靜態(tài)存儲期

  1. 局部靜態(tài)變量:局部靜態(tài)變量是在函數(shù)內(nèi)部聲明的靜態(tài)變量。它們的生命周期貫穿整個程序執(zhí)行期間,但它們的作用域仍然局限于定義它們的函數(shù)。局部靜態(tài)變量在程序的生命周期內(nèi)只初始化一次,通常在程序啟動時進行初始化。它們存儲在靜態(tài)存儲區(qū)。
void function() {
    static int local_static_var = 0;
    // ...
}
  1. 全局靜態(tài)變量:全局靜態(tài)變量是在函數(shù)外部聲明的靜態(tài)變量。它們的生命周期和作用域都局限于定義它們的源文件。全局靜態(tài)變量只在定義它們的源文件中可見,其他源文件無法訪問。它們也存儲在靜態(tài)存儲區(qū)。
static int global_static_var = 0;

void function() {
    // ...
}
  1. 靜態(tài)函數(shù):靜態(tài)函數(shù)是在函數(shù)外部聲明的,并使用static關(guān)鍵字修飾的函數(shù)。它們的生命周期貫穿整個程序執(zhí)行期間,但它們的作用域局限于定義它們的源文件。靜態(tài)函數(shù)只能在定義它們的源文件中被調(diào)用,其他源文件無法訪問。靜態(tài)函數(shù)的代碼存儲在代碼段中。
static void static_function() {
    // ...
}

void function() {
    // ...
}

總結(jié):在C語言中,static關(guān)鍵字用于控制變量和函數(shù)的生命周期和作用域。靜態(tài)變量和靜態(tài)函數(shù)的內(nèi)存分配在靜態(tài)存儲區(qū),而局部靜態(tài)變量在棧上分配內(nèi)存。靜態(tài)變量和靜態(tài)函數(shù)的初始化發(fā)生在程序啟動時。

0