我們將以下面的例子介紹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 巨集名 值。巨集定...