儲存類 作用域 生命週期 鏈結屬性

2021-08-20 19:47:31 字數 1017 閱讀 3254

含義

描述變數空間開闢於記憶體中什麼地方,記憶體被分為棧、堆、資料段、bss段、text段等管理方法的記憶體段,變數空間開闢於這些段中。如區域性變數(棧)、被顯示初始化為非0的全域性變數和被初始化為非0的static區域性變數(data段)、顯示初始化為0和沒有顯示初始化的全域性變數(bss段)

int var1=1;     //資料段

int var2; //bss段

int var3=0; //bss段

int main()

c語言變數的作用域規則是**塊的作用域,**塊:括起來的範圍,變數的作用域為中變數定義開始往後的部分。

執行時分配記憶體空間給變數,使用後收回這個空間,此後記憶體位址與這個變數無關。

程式從源**到最終可執行程式,經歷的過程為預編譯、編譯、彙編和鏈結。編譯是把源**翻譯成xx.o的目標檔案,目標檔案中有符號(變數名、函式名等)、**段、資料段、bss段等,執行時變數名、函式名和相應的記憶體對應起來,靠符號來鏈結。c語言的符號有三種鏈結屬性:外鏈結屬性、內鏈結屬性、無鏈結屬性。

rodata段:儲存常量資料,又稱唯讀段

檔案對映區:程序開啟檔案後,將檔案內容從硬碟讀取到程序的檔案對映區,直接在記憶體中操控這個檔案,讀寫完成後儲存,再將記憶體中的檔案寫到硬碟中區。

核心對映區:將作業系統核心程式對映到這個區域。

儲存類相關關鍵字

(1)auto

作用:修飾區域性變數,自動區域性變數,分配在棧上,初始化值是隨機的,因為棧記憶體有髒記憶體的特點(棧和堆記憶體使用特點)

(2)static

用法:1)修飾區域性變數,形成靜態區域性變數

2)修飾全域性變數,形成靜態全域性變數

靜態區域性變數與動態區域性變數的本質區別:儲存類不同

靜態區域性變數:data段或bss段; 動態區域性變數:棧

靜態區域性變數的全域性變數的區別:作用域連線屬性不同

(3)register

作用:暫存器變數效率高,暫存器數量有限,要謹慎使用。

儲存類 作用域 生命週期 鏈結屬性

補充 1 儲存類就是儲存型別,也就是描述c語言變數在何種地方儲存。2 記憶體有多種管理方法 棧 堆 資料段 bss段 text段 段 乙個變數的儲存類屬性就是描述這個變數儲存在何種記憶體段中。1 作用域是描述這個變數起作用的 範圍。2 基本來說,c語言變數的作用域規則是 塊作用域。1 生命週期是描述...

儲存類 作用域 生命週期 鏈結屬性

儲存類,就是儲存型別。用於描述變數空間開闢於記憶體中的什麼地方。儲存類相關的關鍵字 相同之處 靜態區域性變數在儲存類方面 資料段 生命週期方面和全域性變數一樣。不同之處 作用域 鏈結屬性不同。靜態區域性變數作用域是 塊作用域 和自動區域性變數一樣 鏈結屬性是無連線 全域性變數作用域是檔案作用域 和函...

C語言的儲存類 生命週期 作用域 鏈結屬性

關鍵字 auto register extern static 一 儲存類 變數的儲存型別。1 記憶體被分成 棧 堆 資料段 bss段 和text段等不同管理方法的記憶體段。區域性變數被分配與棧中。他的儲存類就是棧。2 被顯式初始化為非0的全域性變數分配在data段。那麼該全域性變數的 儲存類就是d...