• ベストアンサー

Visual C++で配列を動的に確保したい

int n; cin >> n; int array[n]; のような配列の確保がしたいです。Visual C++出ない環境ではできるのですが、VC++ではできないようです。VC++でできますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

http://msdn.microsoft.com/ja-jp/library/zb1574zs.aspx ってことで使えません。 new[]で確保するか、std::vector使うとかで対処かと。

newtgecko
質問者

お礼

ありがとうございます。使えないならしょうがないです。 new[]で確保って int *array = new int(N); のことですか?そうしたらうまくいきました。 ありがとうございます

その他の回答 (3)

回答No.4

標準C++ (ISO/IEC 14882) では,少なくとも2011年版までにおいて配列型の宣言はconstant-expressionを伴うか省略する,となっています。 このため,constant-expressionでないnを使って配列の宣言を行うことはできません。 ただし,標準C (ISO/IEC 98989) では,1999年版より実行時にサイズを決めることのできる配列型が許されるようになっています。 VC++でない環境でできるのは,C++環境においても標準Cの機能を使えるように拡張してあるためではないでしょうか。

newtgecko
質問者

お礼

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

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.3

>int *array = new int(N); >のことですか?そうしたらうまくいきました。 ()じゃなくて[]ですが……。 あとdelete[]での解放をお忘れ無く。 C99なら寿命でちゃんと管理されると思われますが…。

newtgecko
質問者

お礼

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

  • jack-a3
  • ベストアンサー率38% (305/800)
回答No.1

google先生に「C++ 配列 動的確保」で検索すると山ほど出てきます。 その中の先頭数個のページを読んでみて、それでもできないでしょうか?

newtgecko
質問者

補足

言葉が足りなくてすみません。 mallocみたいなのを使えば、VC++でも動きましたが、質問で書いたコードを動くようにしたです。 コンパイラによっては正常に動作するので