Reference (อ้างอิง)
เมื่อตัวแปรถูกประกาศเป็น Reference จะกลายเป็นชื่อทางเลือก (alias) สำหรับตัวแปรที่มีอยู่แล้ว
ไวยากรณ์
Type &newname = existing_name;
การเริ่มต้น
Type &ref = variable_name;
Pointer (ตัวชี้)
Pointer ใช้เก็บที่อยู่ของตัวแปร
ไวยากรณ์
Type *pointer;
การเริ่มต้น
Type *pointer; pointer = &variable_name;
ความแตกต่างหลักระหว่าง Reference และ Pointer คือ -
Reference ใช้เพื่ออ้างถึงตัวแปรที่มีอยู่ด้วยชื่ออื่น ในขณะที่ Pointer ใช้เก็บที่อยู่ของตัวแปร
Reference ไม่สามารถมีค่า NULL ได้ แต่ Pointer สามารถมีค่า NULL ได้
ตัวแปร Reference สามารถส่งผ่านแบบ Pass by Value ในขณะที่ Pointer สามารถส่งผ่านแบบ Pass by Reference ได้
Reference ต้องถูกเริ่มต้นระหว่างการประกาศ ในขณะที่ Pointer ไม่จำเป็น
Reference แชร์ที่อยู่หน่วยความจำเดียวกับตัวแปรต้นฉบับ แต่ก็ยังใช้พื้นที่บน Stack ในขณะที่ Pointer มีที่อยู่หน่วยความจำและขนาดของตัวเองบน Stack