说我有一个数组
int A[2][2];
我想初始化第一行,其中包含常量列表,如此
A[0] = {
1,
2
};
不幸的是编译器返回。
错误:
expected expression before '{' token_.
虽然这个例子很小,但想想大。我知道有一些迟钝的方法,但如果没有一个有效的解决方案,它会让我感到震惊。
答案 0 :(得分:2)
初始化程序不能像那样工作。您应该在声明时将其初始化为
int A[2][2] = { {1, 2} }; // Rest elements will be initialized to 0
或使用指定的初始化程序
int A[2][2] = { [0] = {1, 2} }; // C99 and later
答案 1 :(得分:1)
您正在执行的操作不是初始化(在声明变量时仅 ),但分配。数组是一个不可修改的左值,这意味着它有一个地址但不能分配。
您可以按如下方式显式设置第一个元素:
int A[2][2] = {{1, 2}};
初始化数组或结构时,初始化程序中的任何未指定的值都设置为0.
答案 2 :(得分:1)
你没有初始化;您尝试分配,而无法在C中进行数组分配。
要进行初始化,它将成为变量定义的一部分:
int A[2][2] = { { 1, 2 } };
这会明确初始化矩阵的第一行,其余部分为零。