อธิบาย 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
ได้ครับ! 😊