C學習筆記1 變數的儲存類別

2021-06-23 05:36:36 字數 902 閱讀 7658



1.對於函式而

言,因為函式包含宣告和執行語句兩部分,因此,宣告指的是函式原型,即」函式頭「,而定義則是函式體。

2.對於變數而言,如int a;,這個可以說是宣告,也可以說是定義,而像extern a;這樣的形式,那麼這顯然是乙個外部變數的宣告,可見宣告包含了定義,這兩種不同情況的根本原因是int a在出現的時候系統就給分配了記憶體,而extern a;出現系統並未給它分配記憶體。因而我們可以這樣來區分:把建立了儲存空間的宣告稱為定義,而把不需要建立儲存空間的宣告稱為宣告。

對乙個變數的定義須指定兩種屬性:資料型別和儲存類別,如static int a;

從作用域可分為區域性變數和全域性變數,區域性變數包括函式的形參及函式內定義的變數,全域性變數則是在函式體外定義的變數。

從生存期可分為靜態儲存方式和動態儲存方式,包含自動(auto),靜態(static),暫存器(register)和外部(extern)四類。

1.auto變數

指函式中的區域性變數,定義時一般可省略auto,動態儲存。

2.static變數

在區域性變數前加static,則變為靜態儲存,函式執行後變數的記憶體和資料還在直到程式終止;

在全域性變數前加static,則表明對於有多個不同原始檔的程式,該變數只能在本檔案中起作用,其他原始檔不能呼叫它,靜態儲存。

3.register變數

將區域性變數儲存在暫存器中以提高執行速率,動態儲存。

4.extern變數

在單檔案程式中,可以作為變數宣告;

在多檔案程式中,可以用來引用其他檔案中定義的變數。

是全域性和靜態儲存變數。

一般地,對於某個檔案中的extern變數,先在編譯時在本檔案裡找外部變數的定義,如果找到,就在本文中擴充套件作用域,如果找不到,則在連線時從其他檔案裡找,如果找到,就將作用域擴充套件到本檔案,否則報錯。

C 變數的儲存類別

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

C語言變數儲存類別

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

C語言變數的儲存類別

前面已經介紹了,從變數的作用域 即從空間 角度來分,可以分為全域性變數和區域性變數。從另乙個角度,從變數值存在的作時間 即生存期 角度來分,可以分為 靜態儲存方式 和動態儲存方式。使用者儲存空間可以分為三個部分 程式區 靜態儲存區 動態儲存區。全域性變數全部存放在靜態儲存區,在程式開始執行時給全域性...