某计算机存储器按字节编址,采用小端方式存放数据。假定编译器规定int和short型长度分别为32位和16位,并且数据按边界对齐存储。某C语言程序段如下: struct{ int a; char b; short c; }record; record.a=2

admin2015-12-30  6

问题 某计算机存储器按字节编址,采用小端方式存放数据。假定编译器规定int和short型长度分别为32位和16位,并且数据按边界对齐存储。某C语言程序段如下:
struct{
int a;
char b;
short c;
}record;
record.a=273,
若record变量的首地址为0xC008,则地址0xC008中内容及record.c的地址分别为_______。

选项 A、0x00、0xC00D
B、0x00、0xC00E
C、0x11、0xC00D
D、0x11、0xC00E

答案D

解析 尽管record大小为7个字节(成员a有4个字节,成员b有1个字节,成员c有2个字节),由于数据按边界对齐方式存储(见考点笔记),故record共占用8个字节。record.a的十六进制表示为0x00000111,由于采用小端方式存放数据,故地址0xC008中内容应为低字节0x11;record.b只占1个字节,后面的一个字节留空;record.c占2个字节,故其地址为0xC00E。各字节的存储分配如下图所示。
转载请注明原文地址:https://www.kaotiyun.com/show/IsRi777K
0

最新回复(0)