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