電子書籍の厳選無料作品が豊富!

int n;
cin >> n;
int array[n];

のような配列の確保がしたいです。Visual C++出ない環境ではできるのですが、VC++ではできないようです。VC++でできますか?

A 回答 (4件)

http://msdn.microsoft.com/ja-jp/library/zb1574zs …
ってことで使えません。

new[]で確保するか、std::vector使うとかで対処かと。
    • good
    • 0
この回答へのお礼

ありがとうございます。使えないならしょうがないです。

new[]で確保って
int *array = new int(N);
のことですか?そうしたらうまくいきました。

ありがとうございます

お礼日時:2014/04/20 12:42

標準C++ (ISO/IEC 14882) では,少なくとも2011年版までにおいて配列型の宣言はconstant-expressionを伴うか省略する,となっています。


このため,constant-expressionでないnを使って配列の宣言を行うことはできません。

ただし,標準C (ISO/IEC 98989) では,1999年版より実行時にサイズを決めることのできる配列型が許されるようになっています。
VC++でない環境でできるのは,C++環境においても標準Cの機能を使えるように拡張してあるためではないでしょうか。
    • good
    • 0
この回答へのお礼

ご回答有難うございます。
拡張されているということがあるんですね。人工言語なら、統一した文法を持ってほしいと思うのですが…

お礼日時:2014/04/24 23:38

>int *array = new int(N);


>のことですか?そうしたらうまくいきました。

()じゃなくて[]ですが……。
あとdelete[]での解放をお忘れ無く。

C99なら寿命でちゃんと管理されると思われますが…。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます
メモリの開放に関して了解しました。new int()でうまく行ったのは私だけ?new int[]はJavaぽいですね。

お礼日時:2014/04/24 23:40

google先生に「C++ 配列 動的確保」で検索すると山ほど出てきます。


その中の先頭数個のページを読んでみて、それでもできないでしょうか?

この回答への補足

言葉が足りなくてすみません。

mallocみたいなのを使えば、VC++でも動きましたが、質問で書いたコードを動くようにしたです。

コンパイラによっては正常に動作するので

補足日時:2014/04/20 12:38
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!