變數的儲存類別

2022-07-20 21:03:16 字數 1459 閱讀 7583

普通區域性變數(自動變數)

• 在乙個函式內定義,只在函式範圍內有效。

• 在復合語句中定義,只在符合語句中有效。

• 隨著函式呼叫的結束或復合語句的結束而消亡。

• 如果沒有賦初值,則內容為隨機值。

2.

靜態區域性變數static

• 作用域:定義的函式內有效。

• 生命週期:在定義的整個週期,靜態區域性變數始終從在著,即使退出函式,仍然存在。

• 初值:若未賦以初值,則由系統自動賦值;數值型變數自動賦值為0,字元型變數賦空字元。

1.

普通全域性變數

• 在函式外定義,可被本檔案及其它檔案中的函式所共用,若其它檔案中的函式呼叫此變數,須用extern宣告。

• 生命週期:在程式執行的整個週期都存在。

• 不同檔案的全域性變數不可重名。

2.靜態全域性變數static

• 在函式外定義,作用範圍被限制在所定義的檔案中,即其它檔案中的函式沒法使用。

• 不同檔案靜態全域性變數可重名,但作用域不衝突。

• 生命週期:整個程式執行的週期。

3.說明

• 允許在不同的函式中使用相同的變數名,它們代表不同的物件,分配不同的單元,互不干擾。

• 同一原始檔中,允許全域性變數和區域性變數同名,在區域性變數的作用域內,全域性變數不起作用。

•  乙個變數宣告為const變數,意味著該變數是乙個常量,不可被修改。

• const變數在定義的時候進行初始化。

• 在使用過程中const修飾的變數只能做右值而不能做左值。

• 一般用於修飾一些不想程式中對其值發生改變的變數。

• 告訴系統register修飾的變數將被頻繁使用,對其分配位址時盡量將其分配在暫存器中,以提高訪問速度。

• 這個修飾詞只是告知cpu盡量將變數分配在暫存器中,不一定真的分配(可能優化處理)。

• register變數必須是乙個單個的值,並且其長度應小於或等於整型的長度。

• 區域性變數和形參可作為register變數,全域性變數或靜態變數不行。

• register變數可能不存放在記憶體中,不能用取位址運算子「&」來獲取register變數的位址,也不能用指標來操作。

• 表示變數是易失的,易變的。

• 強制訪存操作,防止編譯器去優化,告訴編譯器每次必須去記憶體中取值,而不是從暫存器或者快取中取值。

使用情況:

• 並行裝置的硬體暫存器(如:狀態暫存器)。

• 乙個中斷服務子程式中會訪問到的非自動變數(全域性變數、靜態變數)。

• 多執行緒應用中被幾個任務共享的變數。

變數的儲存類別

從變數的作用域來分,變數可以分為全域性變數和區域性變數。在乙個函式內部定義的變數是區域性變數,它只是在本函式範圍內有效,在此函式外不能使用這些變數的。全域性變數可以供所有函式共用,它的有效範圍為從定義變數的位置開始到本原始檔結束。全域性變數的優點是 可以減少函式實參和形參的個數,從而減少記憶體空間以...

變數的儲存類別

儲存類別 是指資料在記憶體中的儲存方式 1 供使用者使用的儲存空間 程式區靜態儲存區 編譯時候分配空間,程式結束釋放空間。存放全域性變數 動態儲存區 定義時動態分配空間,對應函式完成時就釋放空間,再呼叫時又重新動態分配空間。存放auto型別區域性變數 2 儲存型別 auto,static,regis...

4 12 變數的儲存類別

我們已經了解了變數的作用域。作用域是從空間的角度來分析的,分為全域性變數和區域性變數。變數還有另一種屬性 儲存期 storage duration,也稱生命期 儲存期是指變數在記憶體中的存在期間。這是從變數值存在的時間角度來分析的。儲存期可以分為靜態儲存期 static storage durati...