2016-08-17 51 views
-2

列表说我有一个数组初始化多维数组的部分与常数用C

int A[2][2]; 

,我想,象这样

A[0] = { 
    1, 
    2 
}; 
常量列表仅初始化第一行

不幸的是编译器返回。

错误:

expected expression before '{' token_. 

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

+4

这不是初始化。初始化将是'int A [2] [2] = {{1,2}};' – EOF

+0

您不能**将数组**分配给数组。并且在C中没有部分初始化_ – Olaf

+0

@EOF不是吗?如果没有赋值,数组就会有垃圾值,所以无论数组的初始化在哪里,都会导致我相信第一个赋值。 – Bob

回答

2

初始值设定程序不起作用。你应该在声明的时候初始化为

int A[2][2] = { {1, 2} };  // Rest elements will be initialized to 0 

或使用指定的初始化

int A[2][2] = { [0] = {1, 2} }; // C99 and later 
+0

完美无缺,谢谢大家。 – Bob

1

你在做什么不是初始化(这是做的变量声明时)但分配。一个数组是一个不可修改的左值,这意味着它有一个地址但不能被赋值。

可以显式地设置仅仅是第一元件如下:

int A[2][2] = {{1, 2}}; 

当初始化一个数组或结构,在一个初始化任何未指定的值设置为0。

1

您没有初始化;你想分配,你不能做在C数组赋值

要初始化,这将是该变量定义的一部分:

int A[2][2] = { { 1, 2 } }; 

这将初始化矩阵的第一行明确地将剩下的作为零。