Trong C ++, mảng có độ dài thay đổi không hợp pháp. G ++ cho phép điều này như một "phần mở rộng" (vì C cho phép nó), vì vậy trong G ++ (không -pedantic
tuân theo tiêu chuẩn C ++), bạn có thể thực hiện:
int n = 10;
double a[n];
Nếu bạn muốn có một "mảng có độ dài thay đổi" (tốt hơn được gọi là "mảng có kích thước động" trong C ++, vì không cho phép các mảng có độ dài biến đổi thích hợp), bạn phải tự cấp phát bộ nhớ động:
int n = 10;
double* a = new double[n];
Hoặc, tốt hơn, sử dụng một vùng chứa tiêu chuẩn:
int n = 10;
std::vector<double> a(n);
Nếu bạn vẫn muốn có một mảng thích hợp, bạn có thể sử dụng một hằng số , không phải một biến , khi tạo nó:
const int n = 10;
double a[n];
Tương tự, nếu bạn muốn lấy kích thước từ một hàm trong C ++ 11, bạn có thể sử dụng constexpr
:
constexpr int n()
{
return 10;
}
double a[n()];