2

我想知道是否可以在 C 中将 2D 数组的每个元素初始化为相同的值。我像这样声明我的二维数组:

char arry[x][y];

我希望每个元素 arry[0...x][0...y] 都包含星号字符。有没有简单的方法可以在没有循环的情况下做到这一点?我在想类似的事情:

char arry[x][y] = '*'

但我知道那是行不通的。

4

2 回答 2

0

哟可以使用标量初始化器

// 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:
*   *   *   *   *   
*   *   *   *   *   
*   *   *   *   *   
*   *   *   *   *   
于 2021-05-30T03:50:28.873 回答
-1

只要“相同的值”为零就有可能

char arry[x][y] = { 0 };

以上将用零初始化数组的所有元素。

对于任何其他值,通过初始化语法是不可能的(除非您想明确地为每个数组元素拼写“相同的值”)。您将编写自己的初始化周期或使用预先编写的函数。

于 2013-03-30T07:06:40.457 回答