# 配列とは
配列とは変数を入れる箱の事である
## そもそも変数ってなに
```clike
fruit = "リンゴ"; #fruitという変数にリンゴという文字列を代入
```
## 配列の用途
たとえば上記の変数は果物を表す変数です。
これを複数作成したい場合どうしますか?
```clike
fruit1 = "リンゴ"; #fruit1という変数にリンゴという文字列を代入
fruit2 = "ブドウ"; #fruit2という変数にブドウという文字列を代入
```
以上のようにしてもよいですが、変数を複数定義する必要があり、非効率です。
このような場合に配列を使って簡単に管理することができます。
## 配列の概念
最初に書いた通り配列は変数を集めたものです。
※画像の下側が配列のイメージ

## 配列のデータにアクセスする
```clike
fruit = "リンゴ"; #fruitという変数にリンゴという文字列を代入
print(fruit); # fruitの中身を表示
```
変数では以上のようにデータにデータにアクセスし、表示することができました。
じゃあ配列ではどうやってデータにアクセスするのでしょう
答えはindex(添え字)というものを使ってアクセスします。
index(添え字)はどの言語でも基本的に0から始まります。

配列の次の要素にアクセスする場合は添え字の数を増やしてあげます

## 実際に書いてみる
```clike
#include <stdio.h>
int main(void) {
// 配列の作成
char *fruitArray[3] = {
"リンゴ",
"ブドウ",
"バナナ",
};
printf("%s\n", ary[0]); // リンゴ
printf("%s\n", ary[1]); // ブドウ
printf("%s\n", ary[2]); // バナナ
return 0;
}
```
## for文と組み合わせてみる
配列の要素に全て表示したい場合はForループと組み合わせて使用する場合が多いです。
```clike
#include <stdio.h>
int main( void ){
// 配列の作成
char *fruitArray[3] = {
"リンゴ",
"ブドウ",
"バナナ",
};
// 配列の要素数 = 配列の要素全体の大きさ / 配列の要素一つ分の大きさ
int arraysize = sizeof fruitArray / sizeof fruitArray[0];
printf("配列全体のメモリサイズ: %ld\n", sizeof fruitArray); //配列全体のメモリサイズ
printf("配列の要素一つ分のメモリサイズ: %ld\n", sizeof fruitArray[0]); //配列の要素一つ分の大きさ
printf("配列の要素数: %d\n", arraysize); //配列の要素数 (3)
// ループ
for( int i=0; i<arraysize; i++ )
{
printf( "添え字の値");
printf(fruitArray[i]);
}
return 0;
}
```