前回はfor文の二重ループの説明をしましたが、今回からは一次元配列の基礎を説明していきたいと思います。
では早速いきましょう。
配列とは?
型名 配列名[整数定数] 表示例 int a[5]
- 「同じ型の変数の集まり」を背番号で管理する
- ここの変数を「配列要素」と呼び、背番号を「添字」と呼ぶ。
- 配列要素は、配列の名前に続けて添字演算子「 [ ] 」の中に背番号を入れて表す。
ー例 a[0],a[1],a[2],a[3],a[4]
- 添字は「0から始まる」
ー配列の要素数をNとした場合、添字は「0~N-1」となる。
- 配列を宣言する際の要素数は、0より大きい「整数定数」でなければならない。
以上で簡単な説明は終了となります。
言葉だけではなかなかイメージできないと思うので、サンプルコードを見ながら、説明していきます。
配列のイメージ
配列のイメージとしては上記の写真のようになります。
積み木みたいなイメージでしょうか?
配列の初期化
int a[5] = {0,1,2,3,4};
- 上記の例では配列aの要素a[0],a[1],a[2],a[3],a[4]をそれぞれ0,1,2,3,4で初期化される。
- 配列の宣言の際、要素数が記述されていないと、初期化の数の基づいて定義されるので、以下のように記述しても同じ。
ー int a[] = {0,1,2,3,4};
- 初期化子の足りない要素は「0」で初期化される。
ー int a[5]= {0};
初期化に関する記述は以上になります。
配列のコピー
#include <stdio.h>
int main(void){
int i;
int a[5]={3,5,7};
int b[5];
for(i=0; i<5; i++){
b[i]=a[i];
}
puts(" a b");
puts("----------");
for(i=0; i<5; i++){
printf("%4d%4d\n",a[i],b[i]);
}
return 0;
}
/*実行結果
a b
----------
3 3
5 5
7 7
0 0
0 0
*/
上記のサンプルコードの流れは下記の写真のようになります。
ここで注意して欲しいのは、代入演算子を利用して配列を一括してコピーすることはできないことです。
b=a;
こんな感じで一括して代入できないということですね。
なので必ず添字を指定して、要素を一つ一つ代入していく必要があるのです。
配列の要素への読み込み
#include <stdio.h>
int main(void){
int i;
int a[5];
for(i=0; i<5; i++){
printf("a[%d]: ",i); scanf("%d",&a[i]);
}
for(i=0; i<5; i++){
printf("a[%d] = %d\n",i,a[i]);
}
return 0;
}
/* 実行結果
a[0]: 4
a[1]: 6
a[2]: 2
a[3]: 7
a[4]: 9
a[0] = 4
a[1] = 6
a[2] = 2
a[3] = 7
a[4] = 9
*/
これも配列の表示の時と同じように配列の要素を一括して読み込むことができないのでので、for文などの繰り返し文を利用して、ここの配列要素を読み込む必要があります。
以上で今回は終了となります。
今回の配列もプログラミングでは非常に利用頻度の高いものなので、しっかり自分をものにしていきましょう。
最後までありがとうございました。次回もよろしくお願いします。
コメント