0

このコードは Bloodshed Dev-C++ 4.9.9.2 では正常にコンパイルされますが、Visual Studio 2010 ではエラーが発生します: 式には定数値が必要です。ユーザーが配列サイズを入力した後に、ポインターを使用せずに配列を作成するにはどうすればよいですか?

#include <cstdlib>
#include <iostream>
using namespace std;

int main()
{
    int size = 1;
    cout << "Input array size ";
    cin >> size;
    int array1[size];
    system("PAUSE");
    return 0;
}
4

3 に答える 3

3

配列の代わりにを使用しますstd::vector(通常は良い考えです):

std::vector<int> array1(size);

ご参考までに、ご覧になっている違いは Dev-C++ 自体によるものではなく、gcc/g++ によるものです。あなたが使用しているのは、g ++がたまたま実装しているC ++の非標準拡張機能ですが、VC ++はそうではありません。

于 2011-05-01T19:23:57.817 に答える
0

変数を使用して自動配列のサイズを設定する機能は、C++ の一部ではなく C の一部であり、GCC が私たち全員に押し付けたいと考えている拡張機能です。そして、DevC++ は cr*p の邪悪な部分ですが、ここでは問題はありません。変更のため (これは完全に GCC が行っていることです) - なぜあなた (または他の誰か) がそれを使いたいのか想像できません。

このようなことについて警告するフラグを付けて、GCC で C++ コードを実際にコンパイルする必要があります。最低でも -Wall と -pedantic をお勧めします。

于 2011-05-01T19:23:12.383 に答える
-1

または

int array1 = new int[size];

同様に機能すると思います(最後にC++に触れてから1〜3か月経ちました)

しかし実際、C++ を使用している場合は、はるかに柔軟な std::vector を使用してください。

于 2011-05-01T19:25:16.890 に答える