C變數儲存空間 作用域 生命週期

2022-09-12 08:18:13 字數 1159 閱讀 5270

變數分類:

1.全域性變數

2.全域性靜態變數

3.區域性變數

4.區域性靜態變數

5.暫存器變數 register

變數型別

作用域儲存空間

生命週期

全域性變數

整個程式可見

靜態區(./data./bss)

整個程式執行期間

全域性靜態變數

整個程式可見

靜態區(./data./bss)

整個程式執行期間

區域性變數

函式內部

棧函式執行期間

區域性靜態變數

整個程式可見

靜態區(./data./bss)

整個程式執行期間

暫存器變數

函式內部

暫存器函式執行期間

int a = 0;    //

全域性變數

char *p1; //

全域性變數

static

int x = 10; //

全域性靜態變數

void func(void

) int

main()

變數或常量

儲存空間

作用域生命週期

a靜態區(.data)

整個工程

extern int a

整個程式結束

p1靜態區(.bss),指向的內存在堆上

整個工程

extern char *p1

整個程式結束,指向的記憶體需要free釋放

x靜態區(.data)

當前檔案

整個程式結束b棧

func函式

func函式結束s棧

func函式

func函式結束

p2棧,指向的內存在堆上

func函式

func函式結束,指向的記憶體需要free釋放p3棧

func函式

func函式結束

c靜態區(.data)

func函式

整個程式結束

i可能是暫存器或棧

func函式

func函式結束

"123", "hello world"

靜態區(.rdata)

整個程式結束

作用域 生命週期

作用域 能夠被使用的範圍 生命週期 生命的誕生和死亡 在類裡頭,先使用變數,後期到main裡幫助建立生命 在main裡頭作用域的範圍小於等於生命週期的範圍,在使用作用域之前已經預設存在生命週期了 作用域是不考慮生命週期的,因為作用域的線路比執行時候來的條數廣 作用域是製造多條線路,生命週期是執行一條...

C語言變數作用域和生命週期

1 c語言不支援對形參變數的引用,也就是說,形參變數的作用域僅在於函式定義域內 2 有的c語言編譯器支援對變數不在函式開始的時候定義 3 全域性變數可以作為函式間通訊的乙個工具 4 全域性變數可以通過減少函式形引數,較少記憶體空間,較少傳遞資料的時間消耗 5 動態變數的生命週期和其所在的汗水一樣 6...

C 程式變數作用域生命週期筆記

1.c程式中通常將變數宣告在檔案的最開始 c 中變數宣告較隨意,可以在使用的時候宣告。2.c程式中編譯的時候將變數寫入符號表,變數表,便於在函式方便的使用 c 是類安全處理,不能只在程式最開始的時候宣告變數,在建構函式有可能不明確輸入引數的定義,這時候就要支援在需要的時候宣告,而不是在函式的最開始。...