Reference (อ้างอิง)
ชื่อเรียกทางเลือก (alias) สำหรับตัวแปรที่มีอยู่แล้ว
Type &newName = existingVar; // ต้อง initialize ทันที
Pointer (ตัวชี้)
เก็บ address ของตัวแปร
Type *ptr; // ประกาศ ptr = &variable; // กำหนด address
ความแตกต่างหลัก
- Reference เป็น alias ของตัวแปรเดิม | Pointer เก็บ address
- Reference ไม่สามารถเป็น null ได้ | Pointer เป็น null ได้
- Reference ต้อง initialize ตอนประกาศ | Pointer ไม่บังคับ
- Reference share address กับตัวแปรต้น (แต่ใช้ stack space เล็กน้อย) | Pointer มี address และ size ของตัวเองบน stack
- Reference ไม่สามารถ reseat (ชี้ไปที่อื่น) ได้ | Pointer ชี้ไปที่อื่นได้