作者lueichun (no anonymous)
看板C_and_CPP
標題[問題] 結構內字串的初始化
時間Sat Feb 4 13:31:04 2012
開發平台(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