variant record 跟一般的record是不是可以等價互換?? |
答題得分者是:ha0009
|
chimera
初階會員 ![]() ![]() 發表:62 回覆:78 積分:28 註冊:2003-03-22 發送簡訊給我 |
對於record我有一些疑問: 這三者請問有何不同?? Type Ttest1 = Record case integer of 1 : (a1:integer); 2 : (a2:byte); 3 : (a3:string); end; Ttest2 = Record case integer of 1 : (a1:integer ; a2:byte); 2 : (a3:string); end; Ttest3 = Record a1 : integer; a2 : byte; a3 : string; end; 1.上面這三個有什麼差別??我不太了解,前面兩個是不是三個變數共用同一塊記憶體?? 2.case "integer" of 中的integer是不是只要是整數型態都可以??因為我試驗byte, word替換好像都沒差耶。 3.另外是不是可以不用從0開始??因為我用其他數字好像也是可以的 |
ha0009
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:16 回覆:507 積分:639 註冊:2002-03-16 發送簡訊給我 |
你好:
結構中宣告 Case of 猶如 C 中宣告 Union 一樣,下面我舉例子說明。 U1 = packed record
A : byte;
B : word;
C : String [2];
end;
記憶體排列
ABBCC
共需 5 byte U2 = packed record
case byte of
1 : (k1 : byte);
2 : (k2 : word);
3 : (k3 : String [2]);
end;
記憶體排列
A
BB
CC
共需 2 byte U3 = packed record
case byte of
1 : (k1 : byte; k2 : word);
2 : (k3 : String [2]);
end;
記憶體排列
ABB
CC
共需 3 byte 以上資料排列的 A 代表 子項 A 在記憶體的位置,以此類推。希望能幫助你。
|
chimera
初階會員 ![]() ![]() 發表:62 回覆:78 積分:28 註冊:2003-03-22 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |