這兩個函數都是(至少在我的編譯器下)保證會創建一個seg錯誤,但我不知道爲什麼。我真的很喜歡他們的功能,我也看到了類似的例子,所以我很想知道這裏出了什麼問題,或者怎麼做,我認爲這實際上是做什麼的,它將一個「級」傳遞給某個函數,然後能夠操縱其變量(例如lvl.lvl_cl [X] [Y] [Z] = some_number),然後傳遞迴用於進一步使用將結構傳遞給一個函數會創建一個默認錯誤
任何幫助理解:)
typedef struct {
int lvl_cl[500][500][50];
char lvl_ch[500][500][50];
} level;
level plugh(level * in_lvl){
in_lvl->lvl_cl[444][444][44]++; //it segfaults even if this line is removed
return * in_lvl;
}
level foo(level inlvl){
inlvl.lvl_cl[443][443][43]++; //it segfaults even if this line is removed
return inlvl;
}
int main(void){
level world;
plugh(&world);
foo(world);
return 0;
}
12.000 KO值int。哇!閱讀您的評論。使用類似這樣的方式:將'level'定義爲'* level',並使用'new'關鍵字在堆上創建對象。它絕對會幫助你。 – 2011-04-18 19:54:11
你知道你的結構沒有被初始化嗎? – 2011-04-18 20:03:53
@AdrianMar這是一個C的問題。 – 2011-04-18 20:06:11