这道题考点很多,是一道非常经典的考...
这道题考点很多,是一道非常经典的考题。
考点一:编址单位
分为按字编址和按字节编址,在32位和64位计算机中,基本数据类型大小如下
若按字节编址,则一个数据类型占的地址单元数等于其字节数。
考点二:边界对齐
以字节为单位的边界对齐,也称字节对齐,数据在存储时需要被放置在内存地址的倍数上,比如数据类型的大小为4个字节,那么它需要被存放在地址是4的倍数的位置上。数据按边界对齐存储是一种优化技术,通过调整数据在内存中的存储位置,可以提高计算机系统的性能和效率。
边界对齐后,结构体大小为其大小最大成员变量大小的整数倍。
根据边界对齐的定义,record变量的首地址为0xC008,从首地址开始,按顺序从低地址到高地址依次放入a、b和c这3个成员变量,模拟过程如下:
考点三:大端方式和小端方式
大端方式(Big Endian):数据低位保存在高地址中,数据高位保存在低地址中。大端序和人的书写顺序一致。
小端方式(Little Endian):数据低位保存在低地址中,数据高位保存在高地址中。
以一个16位(2字节)整数0x1234为例,它在大端方式和小端方式下的存储方式如下:
大端方式存储:高字节0x12存储在低地址,低字节0x34存储在高地址。
小端方式存储:低字节0x34存储在低地址,高字节0x12存储在高地址。
在实际应用中,不同的计算机体系结构和操作系统可能采用不同的字节序。例如,x86架构的计算机一般使用小端方式,而网络传输通常使用大端方式。
record.a=273=0x 00 00 01 11,采用小端方式存放数据,可以画出如下布局:
0xC008中内容为0x11,record.c的地址为0xC00E。
本题选D。
登录后提交答案