WeHelp
C 語言是一種通用的、程序式的程式語言,可直接對記憶體與硬體進行操作,效率極高。
  1. C 特色用途、相關職務
  2. Windows 環境建置、測試
  3. Mac 環境建置、測試
  4. Linux 環境建置、測試
  5. C 標準輸出、輸入
  6. C 資料型態
  7. C 變數使用
  8. C 運算符號
  9. IF 條件判斷
  10. Switch 條件判斷
  11. While 迴圈
  12. For 迴圈
  13. Array 陣列
  14. String 字串
  15. Function 函式
  16. 標準函式庫
  17. Struct 結構
  18. Pointer 指標
  19. 指標與函式參數
  20. 指標與陣列
  21. 指標與結構
  22. 動態配置記憶體
Pointer 指標
## C 語言 Pointer(指標)基礎概念 指標是一種**儲存記憶體位址的變數**。透過指標,可以間接存取或修改其他變數的內容。 ### 1. 取得變數位址:`&` ```c int number = 10; printf("%p", &number); ``` `&number` 表示取得 `number` 的記憶體位址。 ### 2. 宣告指標 ```c int *ptr; ``` 表示 `ptr` 是一個「指向 `int` 型態資料」的指標。 不同資料型態通常要使用相對應的指標型態: ```c int *int_ptr; char *char_ptr; float *float_ptr; double *double_ptr; ``` ### 3. 透過指標取得資料:`*` ```c int number = 10; int *ptr = &number; printf("%d\n", *ptr); // 取得 number 的值:10 ``` `*ptr` 稱為**解參照(dereference)**,表示取得指標所指向位址中的資料。 也可以透過指標修改原本的變數: ```c *ptr = 20; ``` 此時 `number` 的值也會變成 `20`。 > 注意:指標使用前應先指向有效的變數,或設定為 `NULL`,不要任意使用未初始化的指標。 --- ## 範例一:使用 `int` 指標讀取與修改資料 ```c #include <stdio.h> int main(void) { int number = 10; int *ptr = &number; printf("number 的值:%d\n", number); printf("number 的位址:%p\n", &number); printf("ptr 儲存的位址:%p\n", ptr); printf("透過指標取得的值:%d\n", *ptr); // 透過指標修改 number *ptr = 25; printf("修改後的 number:%d\n", number); return 0; } ``` 可能輸出: ```text number 的值:10 number 的位址:0x... ptr 儲存的位址:0x... 透過指標取得的值:10 修改後的 number:25 ``` 其中: - `&number`:取得 `number` 的位址 - `ptr`:儲存 `number` 的位址 - `*ptr`:取得或修改 `number` 的值 --- ## 範例二:使用 `char` 指標處理字串 在 C 語言中,字串通常是由 `char` 陣列組成,並以 `'\0'` 表示結尾。 ```c #include <stdio.h> int main(void) { char text[] = "Hello"; char *ptr = text; printf("原本的字串:%s\n", text); // 透過指標修改第一個字元 *ptr = 'Y'; printf("修改後的字串:%s\n", text); // 使用指標逐一印出字元 printf("逐字元輸出:"); while (*ptr != '\0') { printf("%c ", *ptr); ptr++; } printf("\n"); return 0; } ``` 輸出結果: ```text 原本的字串:Hello 修改後的字串:Yello 逐字元輸出:Y e l l o ``` 這裡的重點是: - `char *ptr = text;`:`text` 代表陣列第一個元素的位址 - `*ptr`:取得目前指向的字元 - `ptr++`:讓指標移動到下一個字元 - `'\0'`:字串結尾標記 ## 小結 | 語法 | 意義 | |---|---| | `int *ptr` | 宣告一個指向 `int` 的指標 | | `&number` | 取得 `number` 的位址 | | `*ptr` | 取得或修改指標指向的資料 | | `ptr = &number` | 讓指標指向 `number` | | `ptr++` | 將指標移動到下一個資料位置 | | `NULL` | 表示指標目前不指向有效資料 |
相關學習地圖、教學課程
C 語言,系統程式
掌握基礎的 C 語法,以及進階的系統程式開發能力。