📌 Pointer 的定義 在 C、C++ 等語言中,Pointer 是一種特殊的變數,裡面存放的是另一個變數的記憶體位址。透過 Pointer,我們可以間接操作那個變數的內容。
📚 圖書館的比喻 想像你走進一間圖書館: • 變數 就像一本書,裡面有完整的內容(數據)。 • Pointer 就像圖書館的書目卡,卡片上寫著書在哪個書架、哪個位置。 • 書目卡本身不包含書的內容,但只要你拿著卡片,就能找到那本書並閱讀或修改它。 這個比喻的好處是: • 靈活性:一本書可以被很多人透過不同的卡片找到,就像多個 Pointer 可以指向同一個變數。 • 間接性:你不需要直接拿著書,只要有卡片就能定位。這就像程式中透過 Pointer 間接操作資料。 • 可更新性:如果書搬到另一個書架,只要更新卡片上的位置,Pointer 也能指向新的地址。
🖥️ 程式例子
#include <stdio.h>
int main() { // 一本書:變數本身,裡面有內容 int book = 10;
// 書目卡:指向這本書的地址 int *card = &book;
// 直接讀書的內容 printf("書裡的內容: %d\n", book);
// 用書目卡找到書,再讀內容 printf("書目卡指向的內容: %d\n", *card);
// 用書目卡修改書的內容 *card = 20; printf("修改後書裡的內容: %d\n", book);
return 0; }
📖 輸出結果
書裡的內容: 10 書目卡指向的內容: 10 修改後書裡的內容: 20
📌 解釋
- 變數 (book) = 一本書,裡面有知識(數據)。
- Pointer (card) = 書目卡,記錄書在哪裡。
- *解引用 (card) = 拿著卡片找到書,打開書讀取或修改內容。
這樣的比喻讓人更容易理解:Pointer 本身不是書的內容,但它能帶你找到書,並操作裡面的知識。
✅ 結語
Pointer 就像圖書館的書目卡,它本身不包含知識,但能帶你找到知識的所在。透過這個比喻,初學者能更直觀地理解 Pointer 的用途與威力。