2016-08-17 63 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 } }; 

這將初始化矩陣的第一行明確地將剩下的作爲零。