当我在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 } };
答案 0 :(得分:4)
您必须在单个语句中声明并初始化数组。
int array[STUDENTS][EXAM]={ { 77, 68, 86, 73 },{ 96, 87, 89, 78 },{ 70, 90, 86, 81 } };
如果你真的需要从声明中单独初始化数组,那么你需要通过单独设置每个成员来艰难地完成它。
array[0][0] = 77;
...
答案 1 :(得分:3)
在C99中,您可以使用复合文字:
int (*array)[EXAM];
array = (int[STUDENTS][EXAM]){ { 77, 68, 86, 73 },{ 96, 87, 89, 78 },{ 70, 90, 86, 81 } };
编辑:正如格雷厄姆所说:在这里,你没有初始化一个预先声明的数组;您正在初始化一个新数组,然后将其地址分配给指针
答案 2 :(得分:2)
array={ { 77, 68, 86, 73 ... };
是无效的语法。
这种表达式应该在初始化期间使用,如下所示:
int myArray[5] = { 0 };
有关数组初始化的详细概述,请查看此question。