今、C言語の配列、ポインタという部分をやってます…。
なかなか苦戦してます。使用法と理解に…。
コンピュータってのはものすごく大雑把な例えをすると、もんのすごく引き出しが沢山あるタンスみたいになっていて、それぞれの引き出しに番号がついている。その沢山の引出しの中に入っている数字を出したり入れたりをスゴイ速度でやっていて、これが人間の目には文字に見えたり、絵に見えたりしている…。
それぞれの引き出しには色々な意味があったりして、中に入ってる数字も他で動いてるプログラムの設定だとかデータとかプログラム自体だったりする…。
配列というのは、C言語を使って、この引き出しの幾つかを連続して使えるようにして、それぞれに数字を入れるプログラミングの技法である…。
例えば、20人のテスト採点結果を記録して表示したり計算したいとするならば、
「これから同じような数字20個を入れるので引き出し群20個を「points」という名前にして用意してください。なお個々の数字を取り出したい時は「pointの[12]番」のように引き出し群の名前と番号で指定します」
とコンピュータに記録させる引き出しを予約してから計算をさせていく…これがいわば配列…
この配列…私が昔やってたBASIC言語にもあったのだが、CがBASICと違う点は、Cはプログラムする人間のミスをそんなにサポートしてくれないのだ…。
BASICは初心者にも扱いやすいようにプログラマがミスをすると色々なエラーを返して「ここ間違ってますよ!?」と指定してきて、安全に自作プログラムは中断するようになっている。
例えばさっきの例で言うと、私が間違って「pointsの[26]番に60と入れてください」という指示すると…BASICなら
「pointsの[26]番なんて設定されてませんよ?!」と言ってきて、正常に止まる…(大抵は…)
しかし、Cだと
「pointsのはじめから数えて26番に
相当する引き出しに60入れてきました」
「なんかその引き出しは別のプログラムが使ってたみたいですけどそんなもんシラネーヨ!」
てな風に相当する位置に数字を入れちゃうのだ…
26番目に重要な設定とかが入ってたりしたら…
画面凍結!
動かない!
……リセット…
orz……
この研修中何回起こった事か…実際にはプログラムが「シラネーヨ」なんて毒つくわけはなく、そういう設計だからそういう動きをするのだ…
実際は私も配列の個数設定などには注意しているが、プログラムを打ってると他の計算式と配列の個数に関する所に変な計算式を間違って入れて、それで設定の内容が動いてしまったりして変になっちゃったりするんですよ…
あるC言語入門書の解説に、
「BASIC言語が乗用車ならC言語はF1カー」という記述かあった…。
BASICはパワーステアリング付いてるとか、カーナビが付いてるとかみたいに、運転者(プログラマ)をサポートする機構が備わってる変わりに、ちょっと遅い…しかしCは無駄な機能をつけてないから速い!その代わり運転者は細心の注意を払わなければいけない訳である…
私のF1カーは
若葉マークが付いてるわけで…
もう少し、
クラッシュ覚悟でやるしかなさそうだ…
大爆発しない事を祈りながら…

0