如何在C中初始化矩阵



我需要用空格初始化C中的h x h矩阵。

如何在没有周期的情况下正确地进行?

int h = 8;
char arr[h][h] = {{' '}}; // does not work.... 

这些声明

int h = 8;
char arr[h][h] = {{' '}};

声明一个可变长度数组。可变长度数组只能在函数中声明(例如在main中(,因为它们应具有自动存储持续时间,并且可能不会在声明中初始化。

所以你可以写例如

#include <string.h>
//...
int main( void )
{
int h = 8;
char arr[h][h];
memset( arr, ' ', h * h );
//...
}

也就是说,您可以应用标准函数memset,该函数将数组的所有字符设置为空格字符' '

即使您有一个非可变长度数组来初始化它的所有元素,但最好使用函数memset

#include <string.h>
//...
int main( void )
{
enum { h = 8 };
char arr[h][h];
memset( arr, ' ', h * h );
//...
}

来自GNU站点:

若要将一系列元素初始化为相同的值,请写入'[first。。。last]=值'。这是一个GNU扩展

您可以使用指定的初始化程序。但这种类型的初始化是有效的,仅适用于constant number of rows and columns

char arr[8][8] = { { [0 ... 7] = ' '}, { [0 ... 7] = ' '}, { [0 ... 7] = ' '}, { [0 ... 7] = ' '}, { [0 ... 7] = ' '}, { [0 ... 7] = ' '}, { [0 ... 7] = ' '}, { [0 ... 7] = ' '}  };

相关内容

  • 没有找到相关文章

最新更新