看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question):想請問以下的code: 餵入的資料(Input): 預期的正確結果(Expected Output):原本預期的結果是結構內所有字串都能 被初始化 錯誤結果(Wrong Output):但是卻出現syntax error before '{'token以及 syntax error before '}'token這些錯誤 程式碼(Code):(請善用置底文網頁, 記得排版) struct STUDENT { int id; char name[80]; int take_num; int takes[6]; }; void init(struct STUDENT students[]) { int i,j; for(i=1;i<256;i++) { students[i].id=-1; students[i].name[80]={0}; } } 補充說明(Supplement):請問這應該如何修改呢?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.251.186.10
Dforce:memset(students[i].name, 0, 80); 如何? 02/04 13:48
bigbite:compiler? 02/04 14:13
diabloevagto:我compiler沒錯啊 02/04 14:20
diabloevagto:結果正常 02/04 14:20
shadow0326:初始化是在定義的時候就要初始化, 不能用在之後 02/04 14:25
shadow0326:students[i].name[80]會變成未定義行為 02/04 14:26
diabloevagto:如果要給值的話要每個都給,多一個80次的loop 02/04 14:34
diabloevagto:不知道為什麼我compiler可以xdd 02/04 14:34
firejox:未定義的行為?where? 02/04 14:47
shadow0326:name[80]超過宣告範圍呀 02/04 14:50
shadow0326:其實POD struct可以直接初始化, 不用透過func另外賦值 02/04 14:52
firejox:我覺得主要重點是語法問題...語法正確再來看未定義行為.. 02/04 15:36
firejox:連complier都過不了 又如何產生未定義行為... 02/04 15:39