Trong C++, mảng độ dài thay đổi không hợp pháp. G ++ cho phép này là một "mở rộng" (vì C cho phép nó), vì vậy trong G ++ (mà không bị -pedantic
về sau chuẩn C++), bạn có thể làm:
int n = 10;
double a[n]; // Legal in g++ (with extensions), illegal in proper C++
Nếu bạn muốn có một "mảng chiều dài thay đổi" (tốt hơn được gọi là một "động kích thước mảng" trong C++, vì mảng chiều dài thay đổi thích hợp không được phép), bạn có thể sở để tự động cấp phát bộ nhớ tự hỏi:
int n = 10;
double* a = new double[n]; // Don't forget to delete [] a; when you're done!
Hoặc tốt hơn nữa, sử dụng một container tiêu chuẩn:
int n = 10;
std::vector<double> a(n); // Don't forget to #include <vector>
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 liên tục, không phải là một biến, khi tạo ra nó:
const int n = 10;
double a[n]; // now valid, since n isn't a variable (it's a compile time constant)
Tương tự như vậy, nếu bạn muốn để có được kích thước từ một hàm trong C + +11, bạn có thể sử dụng một số constexpr
:
constexpr int n()
{
return 10;
}
double a[n()]; // n() is a compile time constant expression
Nó sẽ giúp cung cấp một ngôn ngữ. Trong C++, mảng của bạn trong biểu mẫu đó cần phải có kích thước hằng số biên dịch. – OrangeAlmondSoap
C++, sử dụng Codeblocks với trình biên dịch mingw32-g ++! – msmf14
Cảm ơn, Justin và @AndrewVarnerin, đã giải quyết nó! thêm const trước int: const int n = 10; Giải quyết! – msmf14