文字列の配列
文字列テーブル
文字列の配列を作成したい場合は、文字列自体が配列なので結果的に2次元になります
char型の多次元配列による文字列配列を文字列テーブルと呼びます
char 変数名[文字列数][文字列の長さ];
これが基本的な1次元の文字列テーブルです (配列的には見てわかるとおり2次元です)
数値型の配列と大きくちがうのはアクセス時の添え字には1次元だけでよいという部分です
(正確には、2次元目を省略すると先頭配列[0]が自動的に割り当てられるようになっているのです)
つまり、どの文字列かだけを指定します
もちろん2次元目以降も正確に指定して %c などで文字列配列の1文字を抽出することもできますよ
#include <stdio.h>
int main()
{
char name[3][5] = { "Rena" , "Yuki" , "Mimi" };
printf("%s\n%s\n%s" , name[0] , name[1] , name[2]);
return 0;
}
初期化する文字列が1つしかない場合は中括弧の必要はありません
しかし文字列の配列の場合は中括弧によるリストで初期化します
文字列テーブルの2次元配列(実質的には3次元)もこれまで同様です
これらの技術は高等な文字列操作を可能にするものなので重要ですよ、たぶん
#include <stdio.h>
int main()
{
char cast[][2][64] = {
{"レイ(南斗)" , "塩沢兼人"},
{"レイ(エヴァ)" , "林原めぐみ"}
};
printf("キャスト\n%s\t%s\n" , cast[0][0] , cast[0][1]);
printf("%s\t%s" , cast[1][0] , cast[1][1]);
return 0;
}
上のプログラムの初期化では、中括弧の中に中括弧がありますね
多次元配列の初期化では特に取り上げませんでしたが、このような記述方も可能です
多次元配列の初期化の場合は { { } , { } } というように、中括弧のリストの中にリストを記述して
このように2次元目であることを明確にあらわすような記述方があります
得られる結果は同じですが、可読性を考えるとこちらが一般的な記述方ではないでしょうか