1. 程式人生 > >C語言入門教程-學習筆記

C語言入門教程-學習筆記

變數儲存類別

C語言根據變數的生存週期來劃分,可以分為靜態儲存方式動態儲存方式

靜態儲存方式:是指在程式執行期間分配固定的儲存空間的方式。靜態儲存區中存放了在整個程式執行過程中都存在的變數,如全域性變數。

動態儲存方式:是指在程式執行期間根據需要進行動態的分配儲存空間的方式。動態儲存區中存放的變數是根據程式執行的需要而建立和釋放的,通常包括:函式形式引數;自動變數;函式呼叫時的現場保護和返回地址等。

C語言中儲存類別又分為四類:自動(auto)、靜態(static)、暫存器的(register)和外部的(extern)。

1、用關鍵字auto定義的變數為自動變數,auto可以省略,auto不寫則隱含定為“自動儲存類別”,屬於動態儲存方式。

2、用static修飾的為靜態變數,如果定義在函式內部的,稱之為靜態區域性變數;如果定義在函式外部,稱之為靜態外部變數。

注意:靜態區域性變數屬於靜態儲存類別,在靜態儲存區內分配儲存單元,在程式整個執行期間都不釋放;靜態區域性變數在編譯時賦初值,即只賦初值一次;如果在定義區域性變數時不賦初值的話,則對靜態區域性變數來說,編譯時自動賦初值0(對數值型變數)或空字元(對字元變數)

3、為了提高效率,C語言允許將區域性變數得值放在CPU中的暫存器中,這種變數叫“暫存器變數”,用關鍵字register作宣告。

注意:只有區域性自動變數和形式引數可以作為暫存器變數;一個計算機系統中的暫存器數目有限,不能定義任意多個暫存器變數

;區域性靜態變數不能定義為暫存器變數。

4、用extern宣告的的變數是外部變數,外部變數的意義是某函式可以呼叫在該函式之後定義的變數。

內部函式&外部函式

在C語言中不能被其他原始檔呼叫的函式稱謂內部函式 ,內部函式由static關鍵字來定義,因此又被稱謂靜態函式,形式為:

 static [資料型別] 函式名([引數]) 

這裡的static是對函式的作用範圍的一個限定,限定該函式只能在其所處的原始檔中使用,因此在不同檔案中出現相同的函式名稱的內部函式是沒有問題的。

在C語言中能被其他原始檔呼叫的函式稱謂外部函式 ,外部函式由extern關鍵字來定義,形式為:

 extern [資料型別] 函式名([引數])

 

C語言規定,在沒有指定函式的作用範圍時,系統會預設認為是外部函式,因此當需要定義外部函式時extern也可以省略。

 資料型別 陣列名稱[長度]; 

陣列只宣告也不行啊,看一下陣列是如何初始化的。說到初始化,C語言中的陣列初始化是有三種形式的,分別是:

1、 資料型別 陣列名稱[長度n] = {元素1,元素2…元素n};

2、 資料型別 陣列名稱[] = {元素1,元素2…元素n};

3、 資料型別 陣列名稱[長度n]; 陣列名稱[0] = 元素1; 陣列名稱[1] = 元素2; 陣列名稱[n-1] = 元素n;

我們將資料放到陣列中之後又如何獲取陣列中的元素呢?

獲取陣列元素時: 陣列名稱[元素所對應下標]; 

如:初始化一個數組 int arr[3] = {1,2,3}; 那麼arr[0]就是元素1。

注意:

1、陣列的下標均以0開始;

2、陣列在初始化的時候,陣列內元素的個數不能大於宣告的陣列長度;

3、如果採用第一種初始化方式,元素個數小於陣列的長度時,多餘的陣列元素初始化為0;

4、在宣告陣列後沒有進行初始化的時候,靜態(static)和外部(extern)型別的陣列元素初始化元素為0,自動(auto)型別的陣列的元素初始化值不確定。