某32计算机按字节编址,采用小端方式存放数据,编译器按边界对齐方式为下列 C 语言结构型数组 变量 employee 分配储存空间。
struct record{
int id;
char name[10];
int salary;
}employee[ 200];
数组 employee 的起始地址为0000A0BOH,employee[1].id 的机器数为12345678H, 问 5 6H 的地址是多 少 ? ( ) 。
A.0000 A0C3H
B.0000 A0C4H
C.0000 A0C5H
D.0000A0C6H
[tag_link]
正确答案:C
在 小端方式 下,数据的存放顺序是从最低有效字节到最高有效字节。例如,对于一个 4 字节的整数 12345678H,存放顺序为 78H 56H 34H 12H。首先,我们需要计算 struct record 的大小。根据定义: int id ; 占用 4 字节。char name[10] ; 占用 10 字节。int salary ; 占用 4 字节。总共需要 18 字节。然而,由于编译器按 边界对齐 方式分配存储空间,通常会对齐到最接近的 4 字节边界。因此,struct record 实际上会占用 20 字节(因为 18 需要向上对齐到 20)。数组 employee 的起始地址为 0000A0B0H。employee[1] 的起始地址为 0000A0B0H + 20 = 0000A0C4H 在 employee[1] 中, id 的值为 12345678H,存储在小端模式下: 地址 0000A0C4H ��放 78H 地址 0000A0C5H 存放 56H 地址 0000A0C6H 存放 34H 地址 0000A0C7H 存放 12H 因此,56H 的地址是 0000A0C5H。