初始化多维数组的部分与常数用C
问题描述:
列表说我有一个数组初始化多维数组的部分与常数用C
int A[2][2];
,我想,象这样
A[0] = {
1,
2
};
常量列表仅初始化第一行
不幸的是编译器返回。
错误:
expected expression before '{' token_.
这个例子虽然小,想大。我知道这样做有一些迟钝的方式,但如果没有有效的解决方案,这会让我震惊。
答
初始值设定程序不起作用。你应该在声明的时候初始化为
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
答
你在做什么不是初始化(这是做仅的变量声明时)但分配。一个数组是一个不可修改的左值,这意味着它有一个地址但不能被赋值。
可以显式地设置仅仅是第一元件如下:
int A[2][2] = {{1, 2}};
当初始化一个数组或结构,在一个初始化任何未指定的值设置为0。
答
您没有初始化;你想分配,你不能做在C数组赋值
要初始化,这将是该变量定义的一部分:
int A[2][2] = { { 1, 2 } };
这将初始化矩阵的第一行明确地将剩下的作为零。
这不是初始化。初始化将是'int A [2] [2] = {{1,2}};' – EOF
您不能**将数组**分配给数组。并且在C中没有部分初始化_ – Olaf
@EOF不是吗?如果没有赋值,数组就会有垃圾值,所以无论数组的初始化在哪里,都会导致我相信第一个赋值。 – Bob