#include <stdio.h> char str_array[][6] = {"Red", "Green", "Blue", "Black", "White" }; int main(void) { int i; for (i = 0; i < 5; i++) printf("%d: ¥"%s¥"¥n", i, str_array[i]); return 0; }
実行結果は以下のようになる。
0: "Red" 1: "Green" 2: "Blue" 3: "Black" 4: "White"
この場合、文字列と配列の関係は以下のようになっている。
2次元配列の2次元目の添字(左側の添字)で文字列を指し、
1次元目の添字(右側の添字)で文字列中の各文字を指すことになる。
str_array[0][0] = 'R'; str_array[0][1] = 'e'; str_array[0][2] = 'd'; str_array[0][3] = '¥0'; str_array[0][4] = '¥0'; str_array[0][5] = '¥0'; str_array[1][0] = 'G'; str_array[1][1] = 'r'; str_array[1][2] = 'e'; str_array[1][3] = 'e'; str_array[1][4] = 'n'; str_array[1][5] = '¥0'; str_array[2][0] = 'B'; str_array[2][1] = 'l'; str_array[2][2] = 'u'; str_array[2][3] = 'e'; str_array[2][4] = '¥0'; str_array[2][5] = '¥0'; (以下略)
下図に示す通り、
2次元配列はメモリ上では連続して配置されるが、1次元(右側の添字)のサイズが
決まらないと配置できない。
文字列の最大長を明示的に指定する必要がある理由はこのためである。