RECORD(100分)

  • 主题发起人 主题发起人 wonjin
  • 开始时间 开始时间
W

wonjin

Unregistered / Unconfirmed
GUEST, unregistred user!
TMessage = packed record
Msg: Cardinal;
case Integer of
0: (
WParam: Longint;
LParam: Longint;
Result: Longint);
1: (
WParamLo: Word;
WParamHi: Word;
LParamLo: Word;
LParamHi: Word;
ResultLo: Word;
ResultHi: Word);
end;



TMessage = packed record
Msg: Cardinal;
WParam: Longint;
LParam: Longint;
Result: Longint;
WParamLo: Word;
WParamHi: Word;
LParamLo: Word;
LParamHi: Word;
ResultLo: Word;
ResultHi: Word;
end;

有何不同?
谢谢!!
 
第一种记录定义方式叫可变记录,也就是说
WParam: Longint;
LParam: Longint;
Result: Longint);

WParamLo: Word;
WParamHi: Word;
LParamLo: Word;
LParamHi: Word;
ResultLo: Word;
ResultHi: Word
共用一块内存;在一个时刻只有一种定义有效

而第二种记录定义方法只是给所有的记录变量分配内存,就是说第二种记录定义方法分配的内存大小
是第一种记录定义方法的两倍

就说到这里了
别忘了给分[:)]
 
可变纪录和不变纪录的区别。
楼上说得很清楚了
 
就像是C当中UNION和RECORD的区别
总是晚到一步,晦气。。。
 
多人接受答案了。
 

Similar threads

后退
顶部