前言
本文為《學會 C 語言》一書的學習筆記。
指標
指標是 C 語言的低階程式處理能力,可以直接存取電腦的記憶體位址。
C 語言的指標是一種變數,只是變數內容不是常數値,而是變數的位址。
在 C 程式誤用指標導致的程式錯誤十分難除錯,需要加倍小心。
宣告指標與初始値
C 語言指標的宣告語法,例如:
1 | int *ptr; // 指向 int 的指標宣告 |
取得位址的變數一定在指標之前已經宣告了。
1 | int var = 100; // 宣告變數 |
避免存取到未知的記憶體位址,在宣告指標時指定其初値為 NULL
。
1 | int *ptr1 = NULL; |
可以使用 if
條件判斷指標是否已經指向其他變數。
1 | if (ptr1 == NULL) {...} |
指標運算子
C 語言提供兩種指標運算子。
取址運算子
使用 &
取址運算子可以取得運算元變數的位址。
1 | ptr = &var; |
取値運算子
使用 *
取値運算子可以取得運算元指標的變數値。
1 | var = *ptr; |
範例如下:
1 | int var = 55, var1; // 宣告變數 |
指標的參數傳遞
C 語言的傳址呼叫就是使用指標。
以下範例找出陣列元素的最大値。
1 |
|
指向指標的指標
指向指標的指標是指這個指標指向其他的指標。
範例如下:
1 | int var = 25 |
指標與一維陣列
在 C 程式宣告大小 6 個元素的整數陣列。
1 |
|
在 C 語言,一維陣列的名稱就是指向陣列第一個元素位址的指標常數。
1 | int *ptr; |
可以使用取址運算子 &
來取得陣列第一個和最後一個元素的位址。
1 | ptr = &data[0]; |
指標與字串
C 語言的字串就是 char 字串型態的一元陣列,我們可以宣告指標來指向字元陣列或字串常數。
在 C 程式宣告一個一維字元陣列。
1 | char str[15] = "This is a pen." |
宣告字串指標指向此字串。
1 | char *ptr; |
也可以宣告字串指標指向字串常數。
1 | char *ptrl; |
參考資料
- 陳會安(2016)。學會 C 語言。台北市:旗標。