使用C

时间:2016-08-17 15:55:22

标签: c arrays multidimensional-array

说我有一个数组

int A[2][2];

我想初始化第一行,其中包含常量列表,如此

A[0] = {
    1,
    2
};

不幸的是编译器返回。

错误:

expected expression before '{' token_.

虽然这个例子很小,但想想大。我知道有一些迟钝的方法,但如果没有一个有效的解决方案,它会让我感到震惊。

3 个答案:

答案 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 } };

这会明确初始化矩阵的第一行,其余部分为零。