初始化可变长度数组编译器时会显示错误消息:
[Error] variable-sized object may not be initialized
代码段:
int n;
printf("Enter size of magic square: ");
scanf("%d",&n);
int board[n][n] = {0};
如何初始化可变长度数组?
为什么所有元素都没有以下面的方式初始化为0
;
int board[n][n];
board[n][n] = {0};
答案 0 :(得分:18)
任何形式的初始化语法都无法初始化。您必须以声明的方式将初始值分配给数组元素,无论您喜欢哪种方式。
初始化程序不应尝试为未初始化的实体中包含的对象提供值。
要初始化的实体的类型应为未知大小的数组或完整的对象类型,而不是可变长度数组类型。
答案 1 :(得分:17)
您必须使用memset
:
memset(board, 0, sizeof board);
答案 2 :(得分:0)
1.您可以简单地按如下方式初始化数组 -
int n;
printf("Enter size of magic square: ");
scanf("%d",&n);
int board[n][n];
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
{
board[i][j] = 0;
}
}
2。仅当您要将数组设置为“0”时才应使用 memset()。