C言語講座 - 5 配列

配列とは、変数を列にしたものです。 似たようなデータをまとめて一つの配列に収納することが出来ます。


int i = 0;
int point[5] = {0,30,100,15,24};

point[0] = 8;

printf("%d : %d\n",i,point[i++]); /* 0 */
printf("%d : %d\n",i,point[i++]); /* 1 */
printf("%d : %d\n",i,point[i++]); /* 2 */
printf("%d : %d\n",i,point[i++]); /* 3 */
printf("%d : %d\n",i,point[i++]); /* 4 */

配列は普通の変数の用に作りますが、最後に [] で配列の中に収納できる数を指定します。 配列を初期化するときは、{} で初期化する為の数値を囲みます。中の数値は , で区切ります。

配列に代入するときは、項目一つ一つごとに代入します。 代入先の、配列の中の項目を [] で指定します。 この時注意するのが、配列の中の項目の番号は 0 から始まると言うことです。 つまり 5個 項目のある配列の場合、 0〜4 が番号になります。

では、うっかり point[5] としてしまったらどうなるでしょうか? この場合、配列として確保してない場所なので、運が良ければ何にも起こらず、運が悪ければエラーで落ちます。 といっても多分保護されてるんでOS丸ごとは落ちないでしょうけれど、バグには間違いないので注意するべきです。


char str[] = "HELLO WORLD";
printf("%s\n",str);
printf("%c\n",str[ 0]);
printf("%x\n",str[11]);

さて、今度の配列は「文字列」というものです。 [] があるので配列だということが分かります。しかし中に数字が書いてありません。 これは初期化するときのみ省略可能で、初期化子(初期化に使う数値)の数に自動的に合わせてくれます。

そして、配列に代入するときは {} と , を使いましたが、「文字列」の場合はそんな面倒な事はせずに 直接 "" で囲って初期化することが出来ます。 もちろん初期化の時だけで、代入は1文字ずつです。(strcpy という関数でまとめてできますが。)

文字列の特殊な所はまだあって、それが「最後がヌル文字」という事です。 ヌル(NULL)文字とは 0 の事で、\0 とも書きます。つまり最後がコレで締めてあればそれは文字列だろうと予測がつくわけです。 つまり上の例の場合、実は 11文字ではなく、ヌル文字も含めて 12文字になります。(char str[12])

文字列を printf で表示するときは、%s を使います。このときは配列を直接渡します。 文字列の中の項目は1文字なので、%c で表示します。 又、最後にヌル文字があるか確かめるために %x で 12文字目(str[11])を 16進数表示してみるとちゃんと 0 と表示されます。

Download 今回のソースDownload


★TOP★

Copyright(C) へぽぽ