Shammer's Philosophy

My private adversaria

Cの配列チェック

Javaではあり得ないようなことがCでは普通にありえる。
こうした内容の話は探せばたくさんあるのだろうけれども、配列の要素数もその一つ。
Javaだと、


 String array = {"AAA","BBB","CCC"};
 System.out.println(array[100]);


と、存在しない配列の要素数を指定するとエラーになる。
ところが、Cで同様のことをやってもエラーにならず、
そのメモリアドレスの値をそのまま表示してしまう。


 int array = {1,1,1,1,1};
 printf("%d\n", array[100]);


とやると、画面にはわけのわからない(おそらく非常に大きな)数字が出力される。
配列の要素数チェックはプログラマが自分の責任で実装しなければならない。Javaってつくづく便利なんだなぁ・・・
逆にCを知らずにJavaとかPHPばかりやっているとプログラマ的なロジカル思考能力は
どうしてもCをやっている人にはかなわないってことになるだろうと思う。
少し始めるのが遅かったかもしれないがCをやってみてよかった。
なんかCだけで大きなアプリを作ってみたい。そうすればもっとよくわかるだろう。