In C ++ sind Arrays mit variabler Länge nicht zulässig. G ++ erlaubt dies als "Erweiterung" (weil C es erlaubt), also können Sie in G ++ (ohne -pedantic
den C ++ - Standard zu befolgen) Folgendes tun:
int n = 10;
double a[n]; // Legal in g++ (with extensions), illegal in proper C++
Wenn Sie ein "Array mit variabler Länge" möchten (in C ++ besser als "Array mit dynamischer Größe" bezeichnet, da Arrays mit variabler Länge nicht zulässig sind), müssen Sie entweder selbst Speicher dynamisch zuweisen:
int n = 10;
double* a = new double[n]; // Don't forget to delete [] a; when you're done!
Oder, noch besser, verwenden Sie einen Standardcontainer:
int n = 10;
std::vector<double> a(n); // Don't forget to #include <vector>
Wenn Sie dennoch ein geeignetes Array wünschen, können Sie beim Erstellen eine Konstante und keine Variable verwenden :
const int n = 10;
double a[n]; // now valid, since n isn't a variable (it's a compile time constant)
Wenn Sie die Größe einer Funktion in C ++ 11 abrufen möchten, können Sie Folgendes verwenden constexpr
:
constexpr int n()
{
return 10;
}
double a[n()]; // n() is a compile time constant expression