變數的儲存型別

2021-10-20 23:34:33 字數 1309 閱讀 1732

自動變數

自動變數也稱動態區域性變數,automatic variable

自動變數的標準定義格式

auto 型別名 變數名

auto

int temp

沒有指定變數的儲存型別,預設為自動變數(int temp)

自動變數的「自動"體現在進入語句塊時自動申請記憶體,退出語句塊時自動釋放記憶體,僅能被語句塊內的語句訪問,退出語句塊以後不能再訪問。

在不同的並列語句塊內可以定義同名變數,不會相互干擾,因為它們各自佔據著不同的記憶體單元,並且有著不同的作用域。

注:1.自動變數在定義時不會自動初始化,未初始化的自動變數的值是隨機不確定的,即亂碼。

2.自動變數在退出函式後,其分配的記憶體立即釋放,再次進入語句塊,該變數被重新分配記憶體,所以不會保持上次退出函式前所擁有的值。

靜態變數

static variable的定義格式

static 型別名 變數名

static

int temp

在函式內定義的靜態變數,稱為靜態區域性變數,靜態區域性變數只能在定義它的函式內被訪問,而在所有函式外定義的靜態變數,稱為靜態全域性變數,靜態全域性變數可以在定義它的檔案內任何地方被訪問,但不能像非靜態的全域性變數那樣被程式的其他檔案所訪問。

靜態變數是與程式」共存亡「的,而自動變數是與程式塊」共存亡「的。

外部變數

extern variable的標準格式

extern 型別名 變數名

extern

int temp

如果在所有函式之外定義的變數沒有指定其儲存類別,那麼它就是

乙個外部變數。外部變數是全域性變數,它的作用域是從它的定義點到本檔案的末尾。但是如果要在定義點之前或在其他檔案中使用它,那麼就需要關鍵字extern對其宣告(注意不是定義,編譯器並不對其分配記憶體)

外部變數儲存在靜態區內,在程式執行期間分配固定的儲存單元,其生存週期是整個程式的執行期。沒有顯示初始化的外部變數由編譯程式自動初始化為0。

暫存器變數

register variable

暫存器變數就是用暫存器儲存的變數。

register 型別名 變數名

register

int temp

暫存器(register)是cpu內部的一種容量有限但數度極快的儲存器。

現代編譯器能自動優化程式,把普通變數優化為暫存器變數,並且可以忽略使用者的register指定,所以一般無須特別宣告變數為register。

變數的儲存型別

曾巨集安,華清遠見嵌入式學院 講師。我們在程式中會經常定義一些變數來儲存和處理資料。從本質上看,變數代表了一段可操作的記憶體,也可以認為變數是記憶體的符號化表示。當程式中需要使用記憶體時,可以定義某種型別的變數。此時編譯器根據變數的資料型別分配一定大小的記憶體空間。程式就可以通過變數名來訪問對應的記...

變數的儲存型別

儲存型別是從變數的存在時間 即生存期 來劃分變數。變數的儲存型別可分為靜態儲存方式和動態儲存方式。對於動態儲存變數,當程式執行到該變數處時才為其分配儲存空間,當程式執行到該變數所在作用域的結束處時自動收回為其分配的儲存空間,因此它的生存期為所在作用域。在程式開始就執行就為其分配儲存空間,直到程式結束...

變數的儲存型別

變數的儲存型別有兩種 動態和靜態,其中又有四種基本型別 auto,static,register,extern auto便是經常在函式中碰到的那些區域性變數,關鍵字auto可省略,定義register變數就是為了提高對資料的訪問速度,只有區域性自動變數或形參可以這麼定義,下面就static和exte...