プロが教える店舗&オフィスのセキュリティ対策術

Javaでの配列の確保の方法です。

int size = 100;
int[] array = new int[size];

のような確保の方法はどの環境・コンパイラでも思い通りの動作をしてくれますか?
C言語では、このような書き方で確保することはできなかったので、Javaでは可能なのか心配で質問しました。

「動的」という意味がまだ完全にわかっていないのですが、上記のような変数の確保は、動的とはいえないのですか?sizeの値をユーザーから受け取れば、確保する大きさはいつも違うようになると思うのですが・・・。


ちなみに下記のようなプログラムで配列の確保を使おうとしています。
static int[] toIntArray(String[] strs){
  int[] array = new int[strs.length]; // ←ここで 確保しています。
  for(int i = 0; i < strs.length; i++){
   array[i] = Integer.valueOf(strs[i]).intValue();
  }
  return array;
}
上記のプログラムはStringの配列からintの配列に変換することを目的にしています。

A 回答 (4件)

問題ないです。



ちなみにC言語もC99からはできますよ。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
C言語でもできるようになっていうるとは知りませんでした。

ちなみに、このような配列の確保は「動的確保」とはいわないのですか?size変数に合わせて、自由に確保しているように思えるのですが・・・

お礼日時:2013/08/05 21:52

>あぁ, 「C99 にそもそも new はない」ですけどね>#1.



配列の要素数指定に変数が使えるという話であって、newが使えるとかいう話はしてませんが。
質問も読む限り、配列の要素数の指定の仕方の話ですし。

>Visul C++ 2010を使用していますが、コンパイルする前に、「size」の下に波線が出てエラー(内容:式には定数値が必要です)となります。

VisualC++はC言語としてはC90止まりのようです。
    • good
    • 0
この回答へのお礼

>VisualC++はC言語としてはC90止まりのようです。
Micro Softが提供しているので、最新の規格に合わせているものだと思っていました。

Javaで確保できれるかどうかが問題だったので、Javaではできるようなので良かったです。VC2012もC90止まりなのですかね。

お礼日時:2013/08/06 08:47

本題ではないですが


「C言語では、このような書き方で確保することはできなかった」
とは, 具体的にはどのような書き方をしたのですか?

あぁ, 「C99 にそもそも new はない」ですけどね>#1.
    • good
    • 0
この回答へのお礼

「このような書き方」とは、以下の様な書き方をしました。

int main(){
  int size = 10;
  int array[size];
}
Visul C++ 2010を使用していますが、コンパイルする前に、「size」の下に波線が出てエラー(内容:式には定数値が必要です)となります。

ですので、動的確保のときはmalloc()などを使います。
最近はJava、C++を学んだので、Vector、vectorを使ってます。

お礼日時:2013/08/06 00:06

プログラムの実行時に決定されるなら、動的


コンパイル時に決定されるなら、静的

変数化しているかどうかはあまり重要ではありません。
    • good
    • 0
この回答へのお礼

以前お世話になりました。
追加の質問への返答有難う御座います。

例えば、new int[乱数] の形ならどうでしょうか?
いくら擬似乱数でも、コンパイル時に判断できないと思うので、これは「動的確保」になりますか?

また、new int[ユーザが入力した値]なども、動的になりますか?

お礼日時:2013/08/05 23:27

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