เข้าใจ pointer ภาษา c ใน 5 นาที



    เป็นที่สงสัยกันมากสำหรับผู้เริ่มต้น  เขียนภาษา 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();
}


ผลลัพธ์ที่ได้