c語言中儲存區可分為5大儲存區:
**區:存放cpu執行的機器指令,**區是可共享,並且是唯讀的。
資料區:存放已初始化的全域性變數、靜態變數(全域性和區域性)、常量資料。
bbs區:存放的是未初始化的全域性變數和靜態變數。
棧區:由編譯器自動分配釋放,存放函式的引數值、返回值和區域性變數,在程式執行過程中實時分配和釋放,棧區由作業系統 自 動管理,無須程式設計師手動管理。
堆區:堆是由malloc()函式分配的記憶體塊,使用free()函式來釋放記憶體,堆的申請釋放工作由程式設計師控制,容易產生記憶體洩漏。
變數修飾符:
1、auto(自動的)
auto的儲存方式,系統預設的變數儲存型別(變數前無需加auto即預設為auto儲存方式),都會把變數存放在動態儲存區(棧區)。這種變數在程式執行過程中實時分配和釋放。
2、static(靜態的)
static定義的變數的儲存方式是靜態儲存的,靜態區域性變數是放在靜態儲存區的。在整個程式執行期間都不釋放,跟全域性變數一樣長期占用記憶體。
2.1靜態區域性變數:
和全域性變數不一樣的,靜態區域性變數只能在所定義的函式內引用,靜態區域性變數在函式呼叫結束後是仍然存在的,但不能被其他函式引用,但是全域性變數可以在該檔案中任意函式中使用並且長期存在。靜態區域性變數是在編譯時賦初值的,即只賦初值一次,在程式執行時它已經有了初值,以後每次呼叫函式時不再對其重新複製。而只是保留上次函式呼叫結束時的值。在定義靜態區域性變數時,如不賦初值,則編譯時自動賦初值為0。
2.1靜態全域性變數
有時在程式設計中定義乙個全域性變數,只限於被所在原始檔引用,而不想讓其他檔案引用,則可在定義全域性變數前面加static。
當然static也可用於修飾函式,與修飾函式用法可以此類推。保證該函式只能在本檔案中呼叫。
C語言中變數的儲存型別
變數的儲存型別 storage class 是指儲存變數值的記憶體型別。有三個地方可以用於儲存變數 普通記憶體 執行時堆疊 硬體暫存器 用於宣告變數儲存型別的關鍵字 auto static register 在所有 塊之外的變數的預設儲存型別是靜態的 static 儲存於靜態記憶體中,稱為靜態 st...
c語言中幾種常用變數型別
1.全域性變數 外部變數 在各檔案所有函式之外定義的變數。可以被本檔案所有函式引用。生存期整個程式 作用域 從定義變數位置起到本原始檔 c 結束。外部變數作用域擴充套件 1 在乙個檔案內擴充套件變數作用域 在定義點之前函式需要引用外部變數時,在引用前加extern宣告外部變數 不常用 2 將外部變數...
C語言中變數儲存型別和生存週期
本博文基於vc 6.0開發,除錯,執行 內容來自譚浩強的 c語言程式設計 總結 資料型別 浮點型,整型,字元型等都是乙個資料型別 資料儲存型別 資料在記憶體中的儲存方式 這是本博文要討論的重點 注意 資料型別和資料儲存型別都是針對於宣告或定義的函式和變數而言的 靜態儲存型別 變數或函式,在程式執行期...