如何在结构中初始化静态数组
how to initialize static array within struct
我有这个结构:
typedef struct {
int start;
int end;
char board[10][10];
} move;
当我尝试以这种方式初始化它时:
char new_board[10][10]
move struct new_move = {0, 0, new_board}
我收到这个错误:
警告 C4047:'initializing':'char' 的间接级别与 'char (*)[10]'
不同
有什么建议吗?
如果你想用零初始化数组那么你可以简单地写
move new_move = { 0 };
如果您希望结构数组包含数组 char new_board[10][10]
的值,那么您必须将其元素复制到结构数组中。
例如
char new_board[10][10] = { /* some initializers */ };
move new_move = { 0 };
memcpy( new_move.board, new_board, sizeof( new_board ) );
如果 board
是一个字符串数组,那么您还可以使用标准 C 函数 strcpy
.
使用循环复制结构数组中的每个字符串
首先 - 你不能这样做的原因:如果你做这样的事情,你就是在告诉编译器你试图覆盖一个常量指针(table 是一个常量指针).
您可以像这样使用两个四循环来初始化数组:
int i, j
for (i = 0; i < 10; i++)
for (j = 0; j < 10; j++)
new_move.board[i][j] = new_board[i][j];
我认为这应该是最好的。
我有这个结构:
typedef struct {
int start;
int end;
char board[10][10];
} move;
当我尝试以这种方式初始化它时:
char new_board[10][10]
move struct new_move = {0, 0, new_board}
我收到这个错误:
警告 C4047:'initializing':'char' 的间接级别与 'char (*)[10]'
不同有什么建议吗?
如果你想用零初始化数组那么你可以简单地写
move new_move = { 0 };
如果您希望结构数组包含数组 char new_board[10][10]
的值,那么您必须将其元素复制到结构数组中。
例如
char new_board[10][10] = { /* some initializers */ };
move new_move = { 0 };
memcpy( new_move.board, new_board, sizeof( new_board ) );
如果 board
是一个字符串数组,那么您还可以使用标准 C 函数 strcpy
.
首先 - 你不能这样做的原因:如果你做这样的事情,你就是在告诉编译器你试图覆盖一个常量指针(table 是一个常量指针).
您可以像这样使用两个四循环来初始化数组:
int i, j
for (i = 0; i < 10; i++)
for (j = 0; j < 10; j++)
new_move.board[i][j] = new_board[i][j];
我认为这应该是最好的。