อาร์เรย์และพอยน์เตอร์ทำงานค่อนข้างคล้ายกันใน C/C++ แต่มีความแตกต่างที่ลึกซึ้งบางอย่าง ตัวอย่างเช่น ตัวดำเนินการ sizeof ทำงานแตกต่างกันมากในทั้งสอง เมื่อคุณแปลงอาร์เรย์เป็นตัวชี้
ตัวอย่าง
#include<iostream> int main() { const int a[] = { 2, 3, 5, 7, 11 }; const int* p = a; std::cout << ( sizeof(p) != sizeof(a) ); }
ผลลัพธ์
สิ่งนี้ให้ผลลัพธ์ -
1
ตัวดำเนินการ sizeof บนตัวชี้จะให้ขนาดของตัวชี้มากกว่าขนาดของอาร์เรย์ การสูญเสียความสามารถของตัวชี้นี้เรียกว่า "การสลายตัว"