初始化可变长度数组

初始化可变长度数组编译器时,将显示错误消息:


[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};


沧海一幻觉
浏览 696回答 3
3回答

蛊毒传说

无法通过任何形式的初始化语法来初始化 VLA 。在声明之后,您必须以自己喜欢的任何方式将初始值分配给数组元素。C11:6.7.9初始化(p2和p3):初始化程序不得尝试为未包含在正在初始化的实体中的对象提供值。要初始化的实体的类型应为未知大小的数组或不是可变长度数组类型的完整对象类型。

犯罪嫌疑人X

您必须使用memset:memset(board, 0, sizeof board);
打开App,查看更多内容
随时随地看视频慕课网APP