我需要用空格初始化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] = ' '} };