[問題] static下的全域指標結構陣列該如何初始化

看板C_and_CPP作者 (喵食罐頭)時間11年前 (2013/07/18 16:45), 編輯推噓3(307)
留言10則, 3人參與, 最新討論串1/3 (看更多)
抱歉這個標題不太好,不過我不太清楚要怎麼描述 今天我先定義了一個結構為 typedef struct { BYTE drv_type; BYTE drv_mun; BYTE drv_size; BYTE drv_vol[512]; } VOLFS; 然後再宣告一個指標 static VOLFS *VolFs[2]; 請問該如何宣告時就給予初始值讓這陣列所有結構數值都為0呢? 記得標準ANSI-C應該在宣告全域變數且沒有給初始值時給予 0或 NULL 但似乎要看現在編譯器的處理方式(我使用GCC 3.4.4) 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.241.50

07/18 17:12, , 1F
你這個陣列裡面就只有兩個指標 並沒有指到任何結構
07/18 17:12, 1F

07/18 17:12, , 2F
也不存在"使結構數值都為0"的問題
07/18 17:12, 2F

07/18 17:13, , 3F
如果你是要指標一開始初始為0 可以用...Fs[2] = {0};
07/18 17:13, 3F

07/18 17:13, , 4F
(NULL不一定是0就是XD)
07/18 17:13, 4F

07/18 17:33, , 5F
用一個函式去return
07/18 17:33, 5F

07/18 17:36, , 6F
可是當我這樣宣告後後,我在函式內這樣寫
07/18 17:36, 6F

07/18 17:38, , 7F
VOLFS *fs1; fs1 = VolFs[1]; fs1->drv_size = 0;
07/18 17:38, 7F

07/18 17:39, , 8F
程式死當了 orz
07/18 17:39, 8F

07/18 17:40, , 9F
因為你的函式內的fs1沒給記憶體
07/18 17:40, 9F

07/18 17:58, , 10F
只是你說要用ansi c,所以你的情形反而很複雜,用c++就很好解
07/18 17:58, 10F
文章代碼(AID): #1HvwiRrV (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1HvwiRrV (C_and_CPP)