複数の文字列を配列に入れる場合は、文字列自体が配列なので、「配列の配列」すなわち、2次元配列となる。
例えば、文字列を配列に3つ格納するには、次のように宣言する。
char str[3][5] = {"ant","bee","moth"}
これは、配列の要素数のうち、3が文字列の数、5がそれぞれの文字列に格納する文字数(NULL文字を含む)を表す。
メモリー上では、下図のように、それぞれの文字に5バイトずつ確保された領域が3つ並んだ状態となる。
![](https://i0.wp.com/my-studies.org/wp-content/uploads/2023/05/a0547eeb0ede8e5198b3d8d775b80f22.png?resize=808%2C600&ssl=1)
配列に格納された文字列は、次のプログラムで順番に出力できる。
#include <stdio.h>
int main(void)
{
char str[3][5] = { "ant","bee","moth"};
for (int i = 0; i < 4; i++)
{
printf("%s¥n",str[i]);
}
return 0;
}
実行結果
ant
bee
moth
printf関数に渡しているstr[i]はi番目の文字列の先頭要素のアドレスを表す。
(参考)「C言語 新版 ゼロからはじめるプログラミング」 三谷 純 (著) 翔泳社、
「新・明解C言語 入門編 第2版 」柴田 望洋 (著) SBクリエイティブ
コメント