Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

C++ có hỗ trợ Variable Length Arrays (VLA) không?

Không. C++ chuẩn (C++11, C++14, C++17, C++20, C++23) không hỗ trợ Variable Length Arrays (mảng có kích thước xác định tại runtime).

Tiêu chuẩn yêu cầu kích thước mảng phải là constant expression (biểu thức hằng số) biết tại compile-time.

Ví dụ không hợp lệ

void func(int n) {
    int arr[n]; // LỖI compile: n không phải constant expression
    // ...
}

Một số compiler (như GCC) hỗ trợ VLA như mở rộng (extension) tương thích C99, nhưng không chuẩn C++ và không nên dùng.

Giải pháp chuẩn C++

  • std::vector<int> v(n); – Kích thước động, an toàn, tự quản lý bộ nhớ.
  • std::unique_ptr<int[]> p(new int[n]); – Quản lý mảng động thủ công.
  • std::array<int, N> – Nếu kích thước biết tại compile-time.