C ++ 'da, değişken uzunluklu diziler yasal değildir. G ++ buna bir "uzantı" olarak izin verir (çünkü C buna izin verir), bu nedenle G ++ 'da ( -pedantic
C ++ standardına uymadan) şunları yapabilirsiniz:
int n = 10;
double a[n];
Bir "değişken uzunluklu dizi" istiyorsanız (uygun değişken uzunluklu dizilere izin verilmediğinden, C ++ 'da daha iyi "dinamik boyutlu dizi" olarak adlandırılır), belleği dinamik olarak kendiniz ayırmalısınız:
int n = 10;
double* a = new double[n];
Veya daha iyisi standart bir kap kullanın:
int n = 10;
std::vector<double> a(n);
Hala uygun bir dizi istiyorsanız, onu oluştururken bir değişken değil, bir sabit kullanabilirsiniz :
const int n = 10;
double a[n];
Benzer şekilde, boyutu C ++ 11'deki bir işlevden almak istiyorsanız, şunu kullanabilirsiniz constexpr
:
constexpr int n()
{
return 10;
}
double a[n()];