配列に長さ x を指定したいと思います。x はユーザー入力です。しかし問題は、x が const でなければならないことです。
これは私が持っているコードです:
int *length = 0;
cin >> (*length);
const int arraylength = const_cast<int>(*length);
int l[arraylength];
C++ では動的な長さでスタックベースの配列を割り当てることはできません (C では可能です)。長さはコンパイル時の定数である必要があります。std::vector<>
配列を動的に割り当てる(または使用する)必要があります
int* l = new int[arrayLength];
// use l as you did before
delete[] l; // when you no longer need to access its contents
また、 pointer を宣言しますlength
が、それは に初期化されNULL
ます。つまり、逆参照できません (cin >> (*length);
実行時に失敗します) 。
注:C++を使用しているためstd::vector<int>
、生の配列の代わりに使用することをお勧めします-必要に応じて動的なサイズ変更と可能な境界チェック(at()
メンバー関数を使用する場合)の利点が得られます。使用するときに削除する必要もありません有効期間が終了すると、割り当てられたメモリをクリーンアップするための RAII イディオム (例外に直面した場合のメモリ リーク保護も提供します)。
C++ は VLA (可変長配列) をサポートしていません。ただしconst
、int
コンパイル時に修正されていません。
代替案:
std::vector<int> l(arraylength);
また
int* l = new int[arraylength];
//...
delete[] l;