อธิบาย Pointer
| Name | Value | Address | Additional Mappings |
|---|---|---|---|
a | 1 | 100 | a -> 1 |
*b | 100 | 304 | *b -> 1, b -> 100, &b -> 304 |
**c | 304 | 208 | *c -> 100, c -> 304, &c -> 208, **c -> 1 |
ตัวแปรแต่ละตัว:
-
a- กล่องชื่อ
aใส่เลข 1 อยู่ข้างใน - และ
aถูกเก็บไว้ในที่อยู่ (address) หมายเลข 100
- กล่องชื่อ
-
*b- กล่อง
bเป็นกล่องที่ไม่ได้ใส่ค่าโดยตรง แต่เก็บ “ที่อยู่ของกล่องa” ซึ่งก็คือ 100 - และตัวกล่อง
bนี้เองอยู่ที่ address หมายเลข 304
- กล่อง
-
**c- กล่อง
cเป็นกล่องที่เก็บ “ที่อยู่ของกล่องb” ซึ่งก็คือ 304 - และกล่อง
cเองอยู่ที่ address หมายเลข 208
- กล่อง
ความสัมพันธ์ระหว่างตัวแปร:
-
a -> 1
หมายความว่า เมื่อเราเปิดกล่องaเราจะเจอเลข 1 -
*b -> 1
เพราะbเก็บที่อยู่ของaไว้ ดังนั้นเมื่อเราเปิดb(ดูที่อยู่ 100) จะเจอเลข 1 ในa -
**c -> 1
เพราะcเก็บที่อยู่ของbไว้ (304) และbชี้ไปที่aดังนั้น**cก็ชี้ไปถึงเลข 1 เช่นกัน
เปรียบเทียบง่ายๆ:
aเหมือน “กล่องใส่ค่าจริงๆ” (1)bเหมือน “แผนที่บอกตำแหน่งของกล่องa”cเหมือน “แผนที่ที่บอกตำแหน่งของแผนที่b”
ดังนั้น **c ก็สามารถย้อนกลับไปหาค่าใน a ได้ครับ! 😊