เป็นชนิดข้อมูลชนิดหนึ่งของภาษา C (int, float, char)
ข้อดีคือ
- มีความเร็วในการทำงานสูง
- ประหยัดเนื้อที่ในหน่วยความจำหลักขณะประมวลผลเมื่อเทียบกับ Array
Pointer สามารถชี้ Address ของตัวแปรนั้น ๆ ที่อยู่ในหน่วยความจำได้ โดยเมื่อต้องการ Print ตำแหน่งสามารถใช้ %x กับตัวแปรตรง ๆ ในการเรียก Address (&) มาแสดงผล
int i = 20;
printf(“%d”,i); // ได้ 20
printf(“%x”,&i); // ได้ตำแหน่ง Address ของตัวแปร i ที่อยู่ใน Main Memory
การแทนข้อมูลในหน่วยความจำ
การสร้างตัวแปรสำหรับเก็บตัวชี้ Address หรือ Pointer จะใช้ * <ชื่อตัวแปร>
& เป็นตัวแปรที่อ้างอิงถึงตำแหน่ง Address ของตัวแปรใด ๆ
**Note ตัวแปร Void จะชี้ไปที่ตัวแปรประเภทอื่นใด ๆ ก็ได้
int i; // สร้างตัวแปร i
i = 10; // Assigned i = 10;
int *p // สร้างตัวแปร p เก็บ Address
p = &i // ให้ P เก็บตำแหน่ง Address ของ i
ตัวอย่างการประยุกต์ใช้ คู่กับการแปลง
int x = 1, y = 2; // สร้างตัวแปร x=1 และ y=2
int *ip, *iq; // สร้างตัวแปร ip และ iq เก็บ Address
ip = &x; // ให้ตัวแปร ip มีค่าเป็น Address ของ x (ค่าตรง ๆ) | ip = Address x
y = *ip; // ให้ y มีค่าเป็นสิ่งที่ตัวแปร ip ชี้ไป (Address ของ x เก็บค่าอะไร ?) | y = 1
*ip = 0; // ให้สิ่งที่ตัวแปร ip ชี้ไป เปลี่ยนค่าที่อยู่ใน Address นั้น | x = 0
y = 5; // ให้ y = 5
ip = &y; // ให้ตัวแปร ip มีค่าเป็น Address ของ y (ค่าตรง ๆ) | ip = Address y
*ip = 3; // ให้สิ่งที่ตัวแปร ip ชี้ไป เปลี่ยนค่าที่อยู่ใน Address นั้น | y = 3
iq = ip; // ให้ Address ของตัวแปร iq = ip
Post Views: 109