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

C++ รองรับ Variable Length Arrays (VLA) หรือไม่

C++ ไม่รองรับ Variable Length Arrays (VLA) มาตรฐาน C++11 ระบุว่าขนาดอาร์เรย์ต้องเป็น constant-expression

ดังนั้นโค้ดต่อไปนี้จะไม่ทำงานใน C++ มาตรฐาน:

void displayArray(int n) {
    int arr[n]; // Error: variable length array not allowed in C++
    // ......
}

int main() {
    displayArray(7);
}

ข้อยกเว้น: บางคอมไพเลอร์ (เช่น GCC, Clang) รองรับ VLA เป็น extension (GNU extension) แต่ไม่พกพาได้ (non-portable) และไม่ใช่มาตรฐาน C++

ทางเลือกใน C++ มาตรฐาน:

  • std::vector<int> arr(n); - ขนาดไดนามิก จัดการหน่วยความจำอัตโนมัติ
  • std::unique_ptr<int[]> arr(new int[n]); - dynamic array แบบ manual
  • std::array<int, N> - ถ้าขนาดรู้ตอนคอมไพล์ (N เป็น constant)

ข้อสังเกต: C99 รองรับ VLA แต่ C++ ไม่ได้นำมาใช้ เพราะมี vector/array ที่ทันสมัยและปลอดภัยกว่าแล้ว