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

admin2014-01-14  35

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

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

答案D

解析 小端方式存放数据是指将最后一个字节存放在首地址处。显然,0xC008存放的是a变量的最后一个字节,而273用十六进制表示为00000111H。即将a分成4个字节存放,分别为:0x00,0x00,Ox01,0x11。而0xC008存放的是a变量的最后一个字节,即0x11。在程序执行过程中,先给reecor@D@a分配内存,然后给recor@D@h分配内存,而recor@D@a占4个字节,recor@D@h占1个字节,那么存放recor@D@c的地址要偏移5个字节,但是在小端存放数据的方式中,则需要偏移6个字节,即0xc008+0x0006=0xC00E。
转载请注明原文地址:https://kaotiyun.com/show/3qxi777K
0

最新回复(0)