Re: [問題] struct初始化問題

看板C_and_CPP作者 (藍影)時間13年前 (2011/09/29 04:11), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《spidermomo (是不是該好樂迪了)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : vc6.0 : 問題(Question): : struct陣列初始化 : 程式碼(Code):(請善用置底文網頁, 記得排版) : struct _Price : { : int p; : char vStore; : BOOL gridPress; : char primeStore; : char markStore[11]; : BOOL prime[10]; : BOOL mark[10]; : }Price[20]; : 請問是否可以一次初始化 _Price裡的p? 這問題竟是最近才想到比較好的作法 Orz.. 若可接受宣告並給宣值時,可考慮這麼做 Price[20]={ { 1},{ 2 },{ 3 },{ 4 },{ 5 },{ 6 },{ 7 },{ 8 },{ 9 },{ 10 }, {11},{12 },{13 },{14 },{15 },{16 },{17 },{18 },{19 },{ 20 }, }; 若是在 C++ 時,確實再用建構子下去做可能好些。 ---- 這方法是最近搞一些特殊 Vector (double**) 時,突然想到的 - stdarg.h void SetP(struct _Price *arr, ...) { unsigned i, cnt; va_list ptr; va_start(ptr, arr); cnt=va_arg(ptr, unsigned); for(i=0; i!=cnt; ++i) arr[i].p=va_arg(ptr, int); va_end(ptr); } 在呼叫端 int main() { int i; SetP(Price, sizeof(Price)/sizeof(*Price), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20); for(i=0; i!=sizeof(Price)/sizeof(*Price); ++i) printf("%d ", Price[i].p); return 0; } 離原 po 設部份初值有點距離 (記憶體時間之動作不同), 但以便利性而言,應已達到其需求。 < 想不到之前被我垢病的 stdarg , 竟還是被抓出來用了.. > 有其它想法之版友,歡迎不吝分享或指正,謝謝各位。 :) -- No matter how gifted you are, alone, can not change the world. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.78.41 ※ 編輯: tropical72 來自: 180.177.78.41 (09/29 04:13)

09/29 04:38, , 1F
原po用BOOL這表明了有用Windows.h,這可以直接寫成類別了
09/29 04:38, 1F

09/29 04:39, , 2F
win32 api 也可單純以 c language 下去寫,BOOL 也存在.
09/29 04:39, 2F

09/29 04:41, , 3F
(還是我誤會了 windows.h 什麼嗎? XD )
09/29 04:41, 3F

09/29 04:53, , 4F
嗯…沒錯都可以,我一直以為Windows.h通常與C++用在視窗上
09/29 04:53, 4F

09/29 13:59, , 5F

09/29 21:20, , 6F
長見識了,感謝。
09/29 21:20, 6F
文章代碼(AID): #1EWtzaXC (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1EWtzaXC (C_and_CPP)