0

C++ ドキュメントからhttp://www.cplusplus.com/doc/tutorial/arrays/
このような配列を定義するにはint a[b];、変数 b は定数でなければなりません。

g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 で実行しているものは次のとおりです。

int main(){

int a = 10;
int b[a];


for(int i = 0; i < 10; i++){
    cout << b[i] << endl;
}
return 0;
}

変数 a は定数ではなく、エラーはありません。この種の配列定義を受け入れる g++ のバージョンから始めてください。

4

4 に答える 4

4

コンパイラが非標準の拡張機能を使用しています。あなたのコードは有効ではありません。標準の C++ です。可変長配列は C++ の機能ではありません。

サイズは、単なる定数 (つまりconst) ではなく、コンパイル時の定数でなければならないことに注意してください。

于 2013-10-18T00:08:48.530 に答える
4

そのリンクを確認してください: http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Variable-Length.html#Variable-Length

GCC では拡張機能として可変長配列を使用できます

于 2013-10-18T00:11:26.860 に答える
1

コンパイラはコンパイル前にプログラムの大きさを知る必要があるため、C++ で動的配列を作成することはできません。ただし、「new」を使用して配列を作成できます。

int *b = new int[a];

これにより、新しいストレージを予約する新しいアレイが作成されます。この配列には通常の方法でアクセスできます。

for(int i=0; i<a; i++)
{
   b[i];
}
于 2013-10-18T12:26:41.310 に答える
0

動的にサイズ変更された配列の場合、C++ で std::vector を使用できます (正確には配列ではありませんが、十分に近く、生の配列が必要な場合はバッキング ストアを利用できます)。データの動的ブロックを作成することを主張する場合は、単純に 'new type[]' を使用できます。

int a = 100;
int[] b = new int[a];
于 2013-10-18T00:13:56.840 に答える