2

当我在 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 } };
4

3 回答 3

4

您必须在单个语句中声明和初始化数组。

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

如果您确实需要将数组与它的声明分开初始化,那么您需要通过单独设置每个成员来实现这一点。

array[0][0] = 77;
...
于 2013-05-03T15:08:43.963 回答
3

在 C99 中,您可以使用复合文字:

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

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

于 2013-05-03T15:25:20.233 回答
2

array={ { 77, 68, 86, 73 ... };不是有效的语法。

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

int myArray[5] = { 0 };

查看这个问题以获得数组初始化的一个很好的概述。

于 2013-05-03T15:10:23.323 回答