为什么我的数组初始化不编译



当我在MSVS中运行以下代码时,编译器给出

"错误1错误C2059:语法错误:'{'

我确定我是正确的声明和初始化二维数组。语法错误在哪里?

#include <stdio.h>
#define STUDENTS 3
#define EXAM 4
void printArray(int array[][EXAM]);
int main(void){
int array[STUDENTS][EXAM];
array={ { 77, 68, 86, 73 },{ 96, 87, 89, 78 },{ 70, 90, 86, 81 } };

必须在一条语句中声明和初始化数组。

int array[STUDENTS][EXAM]={ { 77, 68, 86, 73 },{ 96, 87, 89, 78 },{ 70, 90, 86, 81 } };

如果确实需要在声明数组的同时单独初始化数组,则需要逐个设置每个成员,这是比较困难的。

array[0][0] = 77;
...

在C99中可以使用复合字量:

int (*array)[EXAM];
array = (int[STUDENTS][EXAM]){ { 77, 68, 86, 73 },{ 96, 87, 89, 78 },{ 70, 90, 86, 81 } };

编辑:正如Graham所说:在这里,你没有初始化一个预先声明的数组;您正在初始化一个新数组,然后将其地址分配给指针

array={ { 77, 68, 86, 73 ... };语法无效。

这种类型的表达式应该在初始化时使用,如下所示:

int myArray[5] = { 0 };

相关内容

  • 没有找到相关文章

最新更新