2013-05-08 83 views
0

任何人都可以請幫助我確定我在這裏做錯了嗎?結構中的數組和初始化

我有以下結構:

typedef struct cell { 
    int number; 
    int marked[10]; 
    int crossed[10]; 
    struct cell *next_sibling; 
}cell; 

我發現了一個錯誤:

Expected expression before {

在下面,其中我試圖初始化結構中定義的陣列的兩行:

cell grid[10][10]; 

int main(){ 
    int i = 0, j = 0; 
    int c; 
    while (getchar() != EOF){ 
     grid[i][j].number = c - '0'; 
     grid[i][j].marked = {0}; 
     grid[i][j].crossed = {0}; 
     ... and so on 
    } 

} 

我通常能夠初始化一個空數組。但是當它在struct中定義時,我很難做到這一點。

回答

0

你在做什麼這裏就不初始化,它的任務,但你並不需要初始化它。 C中的全局變量會自動初始化爲零。只要填寫number字段,如果這就是你所要做的。如果您必須做一些事到markedcrossed領域,使用bzeromemset

bzero(grid[i][j].marked, sizeof grid[i][j].marked); 
memset(grid[i][j].marked, 0, sizeof grid[i][j],marked); 

如果要指定一個特定的值,你當然也可以這樣做:

grid[i][j].marked[3] = 17; 
+0

我還是不能這樣初始化它。我將編輯我的帖子,以顯示整個代碼可能會有助於理解我正在嘗試做什麼。 – chaser 2013-05-08 04:33:58

+0

@chrolli - 經過編輯以符合您的新問題。 – 2013-05-08 04:43:39

+0

如果我想初始化標記的[]並將[]交叉爲[0]以外的其他值,該怎麼辦?我可以在結構體定義中或在單元初始化期間做到這一點嗎? – chaser 2013-05-08 04:50:54

0

grid [0] [0]指的是單元格的一個實例,不是單元格中的任何一個數組。你只被允許在聲明初始化數組,這樣就可以做的最好是

單元網格[10] [10] = {0};

在C++中,結構可以構造 - 結構和類之間的唯一區別是默認的可見性(私有的類,公衆結構)。

+0

這是不行的,我得到一個錯誤「失蹤各地初始括號」 – chaser 2013-05-08 04:43:59

+0

在初始化有效C.你的錯誤是因爲你有一些額外的警告開啓,這是難能可貴的。不過,如果你能避免這種情況,我認爲你不會想完全初始化這個數據結構。這將是很多代碼。 – 2013-05-08 04:54:25