配列は多くの値を格納できる変数であり、変数の集合と考えることも出来る。この意味 で、配列のうち一つの値を格納出来る部分を配列の要素という。 配列に値を格納したり、取り出したりするためには、この要素にアクセスする方法が 分かればよい。配列の要素を指定するには、次のように行う。
int rei[10]; ... rei[0] = 3; rei[5] = 10; |
即ち、配列[要素番号]
で指定する。この時、注意するのは、10 個の大きさ
の配列を宣言したとき、要素の数は 10 個なのだが、C 言語では配列は必ず
0 番から始まる規則 になっているので、
要素番号は 0 番から 9 番までであるという事である。
一般に、n の大きさの配列を宣言すると、要素番号は、 0番から n-1 番までである。
( 要素番号の事を、C 言語では、添字という。 )
配列の添字を用いて、要素を指定した場合、通常の変数とまったく同一に扱うことが 出来る。また、添字は、整数なので、整数式を用いることが出来る。
int i, rei[10]; ... for (i=0; i<10; 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]; } |