[問題] 關於 struct 初始化

看板C_and_CPP作者 (Ray)時間15年前 (2009/03/02 21:14), 編輯推噓8(807)
留言15則, 9人參與, 最新討論串1/2 (看更多)
struct a { int b; // 假設我要讓這個struct的b一開始就為0要怎麼做阿? }; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.43.72.36

03/02 21:16, , 1F
在定義宣告是無法初始化的, 你要建一個實際的空間才行
03/02 21:16, 1F

03/02 21:26, , 2F
3Q~
03/02 21:26, 2F

03/02 21:40, , 3F
C++的話, 就幫這個struct a寫個建構子讓b = 0吧....:)
03/02 21:40, 3F

03/02 21:44, , 4F
接著寫:
03/02 21:44, 4F

03/02 21:45, , 5F
struct a sa={0}; 就可以初始化了
03/02 21:45, 5F

03/02 22:08, , 6F
gcc 可以寫 .b=0, 但不通用.
03/02 22:08, 6F

03/02 22:19, , 7F
gcc還要新一點的版本的才能這樣用 =.=
03/02 22:19, 7F

03/02 22:19, , 8F
因為那是C99的功能,而不是compiler extention
03/02 22:19, 8F

03/02 22:27, , 9F
static const int b=0;
03/02 22:27, 9F

03/03 08:02, , 10F
這點是少數幾個C#比較方便的地方,可以直接在class/stru
03/03 08:02, 10F

03/03 08:02, , 11F
裡面設定初值,如private int b = 0; 而不用大費周章跑
03/03 08:02, 11F

03/03 08:03, , 12F
到ctor去設,更不像C99有static const只能設在int的限制
03/03 08:03, 12F

03/03 08:03, , 13F
c++0x這些真的也許應該參考一下:/
03/03 08:03, 13F

03/03 21:32, , 14F
應該是考慮到不同的ctor的初始化方式吧
03/03 21:32, 14F

03/04 10:32, , 15F
相對應的struct我都再寫一個initial的function比較保險
03/04 10:32, 15F
文章代碼(AID): #19gzlAhN (C_and_CPP)
文章代碼(AID): #19gzlAhN (C_and_CPP)