2017-04-20 126 views
-2

說我有兩個2D陣列,arrayA和arrayBC - 如何初始化一個預初始化的二維數組數組?

int arrayA[2][2] = {{0,1},{1,0}}; 
int arrayB[2][2] = {{0,1},{3,4}}; 

我想創建包含arrayA在索引0和arrayB索引1

我嘗試了3D陣列,

int arrayC[2] = {arrayA, arrayB}; 

但我得到警告

兼容的指針到整數的轉換初始化「詮釋」智慧h表達式類型'int [5] [7]'[-Wint-conversion]

+0

您不能在初始化程序中複製數組。你想完成什麼,你的**實際**問題是什麼?如果你想要一個3D數組,你必須聲明一個並使用完整的初始化程序。 – Olaf

+0

'int arrayC [2] = {arrayA,arrayB};' - >'int(* arrayC [2])[2] = {arrayA,arrayB};' – BLUEPIXY

+0

[DEMO](http://ideone.com/oDddnr) – BLUEPIXY

回答

0

正如註釋中所述,您不能在初始化程序中複製數組。所有「尺寸」都連續存儲在內存中。

例如:

int arr[4][100][20]; 

可以說arr[1]arr[2](的int[100][20]型)是連續 或arr[1][42]arr[1][43](的int[20]型)是連續 或arr[1][42][7]arr[1][42][8](類型int)是連續的

爲了初始化一個已經初始化的兩個2D數組的數組,你可以這樣做:

int arrC[2] = {arrA, arrB}; --> int (*arrC[2])[2] = {arrA, arrB}; 
+1

這是用戶詢問如何用先前的arrayA和arrayB初始化2D陣列的錯誤的解釋。 – Teocci

+1

有關初始化示例,請參閱我的答案中的更新 – 2017-04-22 02:06:32