2014-01-08 224 views
1

如果我寫的在下面的C++創建二維數組的數組

uint8_t empty[2][2] = {{0,0},{0,0}}; 

和嘗試創建那些空數組的數組,

uint8_t empty[][2][2] = {empty, empty, empty}; 

我得到的警告

error: array must be initialized with a brace-enclosed initializer

那麼多冷我初始化一個2個暗淡數組的數組?

+0

爲什麼被標記爲'c'?我的意思是如果沒有任何關於'c'的標籤應該被丟棄。 – luk32

+1

'C/C++'不是真實的。 – crush

+1

@BЈовић不夠公平,但不足夠的人抓住諷刺,可悲。我笑+1。粉碎你的暱稱大大提高你的評論,粉碎的夢想會更好! – luk32

回答

0

如果你必須:

#define EMPTY {{0,0},{0,0}} 
uint8_t empty[][2][2] = {EMPTY, EMPTY, EMPTY}; 

然而,堆放原料的陣列將讓你的代碼很亂在任何時候,如果你問我。

更好地將你的數組封裝在一個類中,這樣調用者就可以對你用它做什麼進行功能描述,而不是處理它的實現細節。

0

您可以將變量聲明爲指針並動態分配內存。

uint8_t **empty=new uint8_t*[2]; 
empty[0]=new uint8_t[2]; 
empty[1]=new uint8_t[2]; 

uint8_t ***Empty=new uint8_t**[3]; 
int i,j; 

for (i=0;i<2;i++) 
    for (j=0;j<2;j++) 
     empty[i][j]=0; 

for (i=0;i<3;i++) 
{ 
    *(Empty+i)=empty; 
} 


//do some work 


//delete the allocated memory 
delete []empty[0]; 
delete []empty[1]; 
delete []empty; 
delete []Empty;