Cで2D配列のすべての要素を同じ値に初期化できるかどうか疑問に思っていました。2D 配列を次のように宣言します。
char arry[x][y];
そして、すべての要素 arry[0...x][0...y] にアスタリスク文字を含めたいと思います。ループなしでこれを行う簡単な方法はありますか? 私は次のようなことを考えています:
char arry[x][y] = '*'
しかし、私はそれがうまくいかないことを知っています。
スカラー初期化子を使用できます:
// Define row and column
int row = 4, col = 5;
// Initialize 2D character array
char array2D[row][col] = {[0 ... (row-1)][0 ... (col-1)] = '*'};
// Print array to screen
printf("\nArray:\n");
for(int x = 0; x < row; x++)
{
for(int y = 0; y < col; y++)
printf("%c\t", array2D[x][y]);
printf("\n");
}
その出力を見ることができます:
Array:
* * * * *
* * * * *
* * * * *
* * * * *
「同じ値」がゼロであれば可能
char arry[x][y] = { 0 };
上記は、配列のすべての要素をゼロで初期化します。
他の値については、初期化構文を使用することはできません (配列要素ごとに「同じ値」を明示的に綴る場合を除きます)。独自の初期化サイクルを作成するか、事前に作成された関数を使用します。