const static變數存放位置

2021-07-03 09:16:55 字數 609 閱讀 8030

我們將以下面的例子介紹const變數和static變數的存放位置:

static int  val_a = 1 ; // 初始化的靜態變數 

int  val_b = 2 ;        // 全域性變數 

const int  val_c = 3 ;  // const 全域性變數 

static int  val_d ;     // 未初始化的靜態變數 

int  val_e ;            // 未初始化的全域性變數

int main()

①static無論是全域性變數還是區域性變數都儲存在全域性/靜態區域,在編譯期就為其分配記憶體,在程式結束時釋放,例如:val_a、val_d、val_f、val_g。

②const全域性變數儲存在唯讀資料段,編譯期最初將其儲存在符號表中,第一次使用時為其分配記憶體,在程式結束時釋放,例如:val_c;const區域性變數儲存在棧中,**塊結束時釋放,例如:val_j。

③全域性變數儲存在全域性/靜態區域,在編譯期為其分配記憶體,在程式結束時釋放,例如:val_b、val_e。

④區域性變數儲存在棧中,**塊結束時釋放,例如:val_h、val_i。

注:當全域性變數和靜態區域性變數未賦初值時,系統自動置為0。

const static變數存放位置 解析

部落格02 一 c語言中文網 static 除了可以修飾全域性變數,還可以修飾區域性變數,被 static 修飾的變數統稱為靜態變數 static variable 不管是全域性變數還是區域性變數,只要被 static 修飾,都會儲存在全域性資料區 全域性變數本來就儲存在全域性資料區,即使不加 st...

變數存放的區域

int a 0 class someclass int main 1 棧區 stack 由編譯器自動分配釋放 存放為執行函式而分配的區域性變數 函式引數 返回資料 返回位址等。2 堆區 heap 一般由程式設計師分配釋放,new,malloc之類的,若程式設計師不釋放,程式結束時可能由os 3 全域...

const static和extern關鍵字

一 巨集定義 概念 巨集定義實質是乙個預編譯指令,在程式未執行之前將某些指令付給相應的變數。一般情況預處理指令都是以 號開頭的,所以巨集定義也是以 開發,關鍵字為 define 定義巨集定義 undef 結束巨集定義 定義格式及作用域 一般巨集定義都定義在程式的首段 define 巨集名 值。巨集定...