【发布时间】:2019-03-05 01:42:57
【问题描述】:
我仍在学习 C,但是当我尝试使用 2d 数组时出现错误:
/Users/harry/Dropbox/C/Practise/test_1/main.c:157:9: error: expected expression int[,] numberGrid = { ^ /Users/harry/Dropbox/C/Practise/test_1/main.c:158:9: warning: too many braces around scalar initializer [-Wmany-braces-around-scalar-init] {1, 2, 3 },
我的代码是:
int main() {
int[,] numberGrid = {
{1, 2, 3 },
{4, 5, 6 },
{7, 8, 9 }
};
printf("%d\n", numberGrid[1, 1]);
}
【问题讨论】:
-
符号
int[,]无效 C。您可能的意思是int numberGrid[3][3] = …。 -
...您也可以only在C iirc中省略数组初始化中的最后一个维度大小
-
@JonathanLeffler 当我将其更改为完全错误时,输出为:-321090932
-
@HarryStanley 是的,因为正如我们所说,这不是用于声明和访问多维度数组的 C 语法。你需要
numberGrid[1][1] -
嗯,你一定是修改了代码才能编译,这就是进步。但是,您仍然应该从编译器中收到警告——您正在使用 GCC(或者可能是 Clang),因此您应该使用
gcc -std=c11 -Wall -Werror …作为初学者(对于我自己的工作,我将-Wextra -Wmissing-prototypes -Wstrict-prototypes添加到那些)。您似乎受到了 C 以外的语言的影响——例如 Fortran、Pascal、Algol、Ada 或……您不能在下标中有效地使用逗号。您需要printf("%d\n", gridNumber[1][1]);才能打印出5。你得到的是数组第 1 行的地址。