如何在struct中初始化静态数组

时间:2015-06-06 12:58:19

标签: c arrays struct initialization static-array

我有这个结构:

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:'初始化' :' char'间接水平与' char(*)[10]'

不同

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

如果你想用零初始化数组,那么你可以简单地写

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使用循环复制结构数组中的每个字符串。

答案 1 :(得分:0)

首先 - 你不能这样做的原因:如果你这样做,你会告诉编译器你试图覆盖一个常量指针(一个表是一个常量指针)。

您可以使用两个四个循环来初始化数组:

int i, j
for (i = 0; i < 10; i++) 
    for (j = 0; j < 10; j++)
        new_move.board[i][j] = new_board[i][j];

在我看来这应该是最好的。