Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ความแตกต่างระหว่าง Pointer และ Reference ใน C++


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 ชี้ไปที่อื่นได้