DELPHI的結構體,共用體和位域的等效實現

2021-04-23 07:46:22 字數 544 閱讀 2262

結構體:就是delphi的packed record,packed必須要,不然不是按byte對齊。

共用體:其實也就是absolute關鍵字的使用,如下

procedure tform1.button2click(sender: tobject);

type

trgb = packed record //結構體

r: byte;

g: byte;

b: byte;

a: byte;

end;

varrgbpack: trgb;

rgbdata: integer absolute rgbpack; //共享記憶體單元

begin

rgbdata := $aa0080ff;

showmessage(inttostr(rgbpack.r) + ',' + inttostr(rgbpack.g) + ',' + inttostr(rgbpack.b));

end;

位域就沒轍了,沒有簡單的方法,還是寫shr,shl然後再用and去進行位與來實現吧。

共用體和結構體

共用體和結構體的宣告與初始化的格式不同。宣告 struct or union new st 初始化 new st 和陣列一樣,使用逗號分隔,並用花括號括起。也可以全放在一行。可以同時完成定義結構和建立結構變數的工作,只需要將變數名放在結束括號的後面 struct or union new st ne...

結構體和共用體

宣告結構和結構體變數 include include define maxtitl 41 define maxautl 31 define max 100 結構宣告 並未建立實際的資料物件 也稱結構宣告為模板 struct bookbok int main 復合字面常量 bk1 struct boo...

結構體和共用體

通過前面的講解,我們知道結構體 struct 是一種構造型別或複雜型別,它可以包含多個型別不同的成員。在c語言中,還有另外一種和結構體非常類似的語法,叫做共用體 union 它的定義格式為 union 共用體名 共用體有時也被稱為聯合或者聯合體,這也是 union 這個單詞的本意。結構體和共用體的區...