Previous: 配列の宣言
Up: 配列 I
Next: 変数の初期化と配列の初期化
Previous Page: 配列の宣言
Next Page: 変数の初期化と配列の初期化
配列は多くの値を格納できる変数であり、変数の集合と考えることも出来る。この意味 で、配列のうち一つの値を格納出来る部分を配列の要素という。 配列に値を格納したり、取り出したりするためには、この要素にアクセスする方法が 分かればよい。配列の要素を指定するには、次のように行う。
int rei[100]; ... rei[0] = 3; rei[2] = 10;
即ち、配列[要素番号] で指定する。この時、注意するのは、100個の大きさ の配列を宣言したとき、要素の数は100個なのだが、C 言語では配列は必ず0番から 始まる規則になっているので、要素番号は0番から99番までであるという事である。 一般に、n の大きさの配列を宣言すると、要素番号は、 0番から n-1 番までである。 ( 要素番号の事を、C 言語では、添字という。 )
配列の添字を用いて、要素を指定した場合、通常の変数とまったく同一に扱うことが 出来る。また、添字は、整数なので、整数式を用いることが出来る。
int i, rei[100]; ... for (i=0; i<100; i++){ rei[i] = 0; }
この例は、配列 rei の全ての要素に 0 を代入している。
char i, str[26]; ... for (i=0; i<26; i++){ str[i] = 'a' + i; }
上の例では、文字型の配列 str の要素に 'a' から 'z' までの文字を順に代入 している。 また、次のように書き換える事も出来る。
int i; char str[26]; ... str[0] = 'a'; for (i=1; i<26; i++){ str[i] = str[i-1] + 1; }
上の例で注意することは、ループが i=1 から始まっていることである。 これを、i=0 から始まるように書くと、str[i-1] が、最初のループ で str[-1] となり、深刻な事態を引き起こす。配列の範囲を越えた添字の 指定は絶対にしてはならない。
また、次の例は誤りである。
間違った例 int rei1[10], rei2[10]; ... for (i=0; i<10; i++){ rei1[i] = i; } rei2 = rei1;
この例の誤りは、rei2 = rei1 である。配列名は、変数ではないので、配列 への代入はできない。代入できるのは、配列の要素のみである。従って、配列 rei1 の中身を全て rei2 にコピーしたい場合は、ループを使って 要素から要素へとコピーするようにしなければならない。
間違った例 int rei1[10], rei2[10]; ... for (i=0; i<10; i++){ rei1[i] = i; } for (i=0; i<10; i++){ rei2[i] = rei1[i]; }