如何在C中初始化矩阵
how to initialize a matrix in 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
,将数组的所有字符设置为 space 字符 ' '
。
即使你有一个非可变长度数组,仍然要用 space 字符初始化它的所有元素,最好使用函数 memset
.
#include <string.h>
//...
int main( void )
{
enum { h = 8 };
char arr[h][h];
memset( arr, ' ', h * h );
//...
}
来自GNU site:
To initialize a range of elements to the same value, write ‘[first ...
last] = value’. This is a GNU extension
您可以使用指定的初始化器。但是这种类型的初始化有效,仅适用于 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] = ' '} };
我需要用空格在 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
,将数组的所有字符设置为 space 字符 ' '
。
即使你有一个非可变长度数组,仍然要用 space 字符初始化它的所有元素,最好使用函数 memset
.
#include <string.h>
//...
int main( void )
{
enum { h = 8 };
char arr[h][h];
memset( arr, ' ', h * h );
//...
}
来自GNU site:
To initialize a range of elements to the same value, write ‘[first ... last] = value’. This is a GNU extension
您可以使用指定的初始化器。但是这种类型的初始化有效,仅适用于 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] = ' '} };