C語言中變數的儲存類別及其儲存方式

2021-07-15 14:06:25 字數 1053 閱讀 5556

(一)auto

auto----自動變數,動態儲存方式

auto是c語言中區域性變數的預設屬性

編譯器預設所有的區域性變數

auo變數儲存在程式的棧中,預設屬性

特點:(1) 自動變數僅適合於區域性變數,其作用域僅限於定義該變數的個體內。在函式定義中定義的自動變數,只在改函式內有效。在復合語句中定義的自動變數只在該復合語句中有效。

(2)自動變數屬於動態儲存方式,只有在使用它,即定義該變數的函式被呼叫時才給它分配儲存單元,開始它的生存期。函式呼叫結束,釋放儲存單元,結束生存期。

(3)由於自動變數的作用域和生存期都侷限於定義它的個體內,因此不同的個體中允許使用同名的變數而不會混淆。

(二)static

static---靜態變數,靜態儲存方式

static變數儲存在程式靜態區中

static修飾的區域性變數儲存在程式靜態區

static的另乙個意義是檔案作用域識別符號

static可以修飾函式,也可以修飾全域性變數

static修飾的全域性變數作用域只是宣告的檔案中

static修飾的函式作用域只是宣告的檔案中

特點:(1)靜態區域性變數

生存期為整個源程式

作用域仍與自動變數相同,即只能在定義該變數的函式內使用該變數

允許對靜態區域性變數賦初值,若未賦予初值,系統自動賦以0值

靜態區域性變數在編譯時賦初值,只賦初值一次

(2)靜態全域性變數

全域性變數的說明之前再冠以static就構成了靜態的全域性變數

(三)register

register---暫存器變數,動態儲存方式

register變數請求儲存於cpu暫存器中

register關鍵字指明將變數儲存於暫存器中

register只是請求暫存器變數,但不一定請求成功

register變數的必須是cpu暫存器可以接受的值

不能用&運算子獲取register變數的位址

特點:(1)只有區域性自動變數和形式引數才可以定義為暫存器變數。

(2)由於cpu中暫存器的個數是有限的,因此使用暫存器變數的個數也是有限的

C語言中變數儲存類別

c語言根據變數的生存週期來劃分,可以分為靜態儲存方式和動態儲存方式。靜態儲存方式 是指在程式執行期間分配固定的儲存空間的方式。靜態儲存區中存放了在整個程式執行過程中都存在的變數,如全域性變數。動態儲存方式 是指在程式執行期間根據需要進行動態的分配儲存空間的方式。動態儲存區中存放的變數是根據程式執行的...

C 語言中變數的儲存類別

在說明c 語言中變數的儲存類別之前,我們需要搞明白生存期和作用域兩個概念。生存期和作用域是指從時間和空間兩個角度去描述變數的特性。不同的變數儲存類別直接導致了變數的生存期不同,通俗的說,也就是變數存在的時間不同。靜態儲存變數一般在變數定義之初就為變數分配了固定的儲存單元,這些儲存單元直到程式結束的時...

C語言變數儲存類別

變數除了型別屬性 int char float.外,另外乙個重要屬性就是儲存類別 系統把程式中用到的資料區分為靜態儲存區和動態儲存區。靜態儲存區 在這個區分配了空間的變數,在程式執行過程中一直存在,即相對是不變的。動態儲存區 在這個區分配了空間的變數,可能隨時被釋放,即相對是不斷變化的。c語言提供了...