เป็นที่สงสัยกันมากสำหรับผู้เริ่มต้น เขียนภาษา c หรือ c++ เกี่ยวกับตัวแปร pointer วันนี้เราจะมาไขข้อสงสัยกันว่า pointer คืออะไร ขั้นแรกให้เรานึกถือแก้วสักใบในร้านค้า แก้วใบนั้นมีราคา สมมติให้ใบละ 100 บาทละกัน และแก้วนั้นก็มีตำแหน่งที่วางขายของตัวเองในร้านค้า นึกถึง 2 อย่างนี้ไว้นะครับ ราคาแก้ว กับ ตำแหน่งของแก้ว ต่อไปจะอธิบายเรื่องตัวแปร pointer มันคือตัวแปรที่ใช้บันทึกตำแหน่งของตัวแปรที่มันชี้และค่าของตัวแปรที่มันชี้
int glass = 100;
int *pt = glass;
จากโค้ดด้านบนนี้ หมายถึง pointer ชื่อ pt ชี้ไปยังตัวแปรชื่อ glass
เวลาอ่านค่าของตัวแปร pointer อ่านได้ 2 ค่า คือ ถ้าสั่ง printf ค่าของ pt จะได้ address ของตัวแปร glass แต่ถ้า prinf ค่าของ *pt จะได้ค่าของตัวแปร glass นั่นคือ 100 ถามว่าค่า address คืออะไร คำตอบคือเลขตำแหน่งที่อยู่ของหน่วยความจำเปรียบเสมือนตำแหน่งที่วางขายของแก้วในร้านค้า ส่วน *pt นั่นก็เปรียบเสมือนราคาของแก้วนั้นเอง สรุปได้ว่า pointer บอกทั้งที่อยู่และค่าของตัวแปรที่มันชี้
โค้ดตัวอย่าง
#include <stdio.h> #include <conio.h> main() { int glass; int *pt; glass = 100; pt = &glass; printf("glass = %d\n", glass); printf("glass address(pt) = %d\n", pt); printf("glass value(*pt) = %d\n", *pt); getch(); }
ผลลัพธ์ที่ได้
Emoticon Emoticon