- ベストアンサー
配列の確保方法について
- Javaで配列を動的に確保する方法についてです。
- C言語とは異なり、Javaではnew int[変数]という形式で確保することができます。
- 上記のプログラムはStringの配列からintの配列に変換するためのものです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
問題ないです。 ちなみにC言語もC99からはできますよ。
その他の回答 (3)
- wormhole
- ベストアンサー率28% (1626/5665)
>あぁ, 「C99 にそもそも new はない」ですけどね>#1. 配列の要素数指定に変数が使えるという話であって、newが使えるとかいう話はしてませんが。 質問も読む限り、配列の要素数の指定の仕方の話ですし。 >Visul C++ 2010を使用していますが、コンパイルする前に、「size」の下に波線が出てエラー(内容:式には定数値が必要です)となります。 VisualC++はC言語としてはC90止まりのようです。
お礼
>VisualC++はC言語としてはC90止まりのようです。 Micro Softが提供しているので、最新の規格に合わせているものだと思っていました。 Javaで確保できれるかどうかが問題だったので、Javaではできるようなので良かったです。VC2012もC90止まりなのですかね。
- Tacosan
- ベストアンサー率23% (3656/15482)
本題ではないですが 「C言語では、このような書き方で確保することはできなかった」 とは, 具体的にはどのような書き方をしたのですか? あぁ, 「C99 にそもそも new はない」ですけどね>#1.
お礼
「このような書き方」とは、以下の様な書き方をしました。 int main(){ int size = 10; int array[size]; } Visul C++ 2010を使用していますが、コンパイルする前に、「size」の下に波線が出てエラー(内容:式には定数値が必要です)となります。 ですので、動的確保のときはmalloc()などを使います。 最近はJava、C++を学んだので、Vector、vectorを使ってます。
- teketon
- ベストアンサー率65% (141/215)
プログラムの実行時に決定されるなら、動的 コンパイル時に決定されるなら、静的 変数化しているかどうかはあまり重要ではありません。
お礼
以前お世話になりました。 追加の質問への返答有難う御座います。 例えば、new int[乱数] の形ならどうでしょうか? いくら擬似乱数でも、コンパイル時に判断できないと思うので、これは「動的確保」になりますか? また、new int[ユーザが入力した値]なども、動的になりますか?
お礼
ご回答ありがとうございます。 C言語でもできるようになっていうるとは知りませんでした。 ちなみに、このような配列の確保は「動的確保」とはいわないのですか?size変数に合わせて、自由に確保しているように思えるのですが・・・