union & struct |
答題得分者是:ikk
|
alvinken
初階會員 ![]() ![]() 發表:21 回覆:32 積分:45 註冊:2008-06-09 發送簡訊給我 |
union 跟 struct 的最大不同點就是 所有成員共用 記憶體,而且ㄧ次只存一個成員的data
最近看到一個別人寫的函式裡的程式,不同的struct 成員的值可以同時存在 只有後存的值 個人倍感疑惑 [code cpp] class T { union{ struct{ char c1 char c2 char c3 char c4 char c5 char c6 }; struct{ short s1 short s2 short s3 }; struct{ long l1 }; }; }; [/code]
------
水至清則無魚,人至賤則無敵。 |
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
alvinken
初階會員 ![]() ![]() 發表:21 回覆:32 積分:45 註冊:2008-06-09 發送簡訊給我 |
|
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
是可以同時存在的...
只不過是存取同一記憶體位置, 以你提供的例子來說 [code cpp] class T { public: union{ struct{ unsigned char c1; unsigned char c2; unsigned char c3; unsigned char c4; unsigned char c5; unsigned char c6; }TUStructc; struct{ unsigned short s1; unsigned short s2; unsigned short s3; unsigned short s4; unsigned short s5; }TUStructs; struct{ long l1; }TUStructl; }TUnion; }; [/code] 以下為應用範例 [code cpp] T tTest; tTest.TUnion.TUStructc.c1 = 0xFF; tTest.TUnion.TUStructc.c2 = 0xe0; tTest.TUnion.TUStructc.c3 = 0x78; tTest.TUnion.TUStructc.c4 = 0x56; tTest.TUnion.TUStructs.s1 為 0xe0ff tTest.TUnion.TUStructs.s1 為 0x5678 [/code]
------
FPGA驗證, FPGA開發平台, http://smims.com |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |