某计算机存储器按字节编址,采用小端方式存放数据。假定编译器规定int和short型长度分别为32位和16位,并且数据按边界对齐存储。某C语言程序段如下: struct{ inta; 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
解析:小端方式存放数据是指将最后一个字节存放在首地址处。显然,0xC008存放的是a变量的最后一个字节,而273用十六进制表示为0000 0111H。即将a分成4个字节存放,分别为:0x 00,0x 00,0x 01,0x 11。而0xC008存放的是a变量的最后一个字节,即0x 11。在程序执行过程中,先给record.a分配内存,然后给record.b分配内存,而record.a占4个字节,record.b占1个字节,那么存放record.c的地址要偏移5个字节,但是在小端存放数据的方式中,则需要偏移6个字节,即0xC008+0x0006=0xC00E。