谁知道这是什么语法规则?

hydream 2005-04-30 09:54:19
hostent=record
h_name:PChar;
h_aliases:^PChar;
h_addrtype:SmallInt;
h_length:Smallint;
case byte of
0:(h_addr_list:&pchar);
1:(h_addr:^PChar);
end;

请问里面的case语句是怎么回事?
...全文
113 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
才子鸣 2005-05-03
  • 打赏
  • 举报
回复
对了.正解!
delphi1234567 2005-05-01
  • 打赏
  • 举报
回复

hostent=record
h_name:PChar;
h_aliases:^PChar;
h_addrtype:SmallInt;
h_length:Smallint;
case byte of
0:(h_addr_list:&pchar);
1:(h_addr:^PChar);
end;



也可以用

case Integer of
0 : ...
1 : ...
end

来代替 Byte, 但一般情况下 Byte 就够用了,可以表示255个域。

如:
TMyRecord = record
Field1 : string;
case byte of
0 : Field2 : Integer;
1 : Field3 : Cardinal;
end;
end;

Field2 和 Field3 共用一个起始地址,向 Field2 写入一个整型值(可能是负数),如果读取时采用 Field3读取,则会按无符号整数处理。

当然,域之间可以不用限制相同的占用空间,编译器会以最大占用空间的域分配内存来使用的。
ron_xin 2005-04-30
  • 打赏
  • 举报
回复
学习...
hydream 2005-04-30
  • 打赏
  • 举报
回复
我知道是公用结构,我是想问语法结构,这种语法到底是怎么用的,没看见那本书上讲。
再说了,byte也是关键字啊,为什么用byte来做选择符呢?而且是0,1,
delphi1234567 2005-04-30
  • 打赏
  • 举报
回复

联合结构,所占用的储存空间起始地址一样,但是以最大的域的字节数分配空间。

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧