首页 > 试题广场 >

题目来源于王道论坛 某计算机存储器按字节编址,采用小端

[单选题]
题目来源于王道论坛

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

若record变量的首地址为0xC008,则地址0xC008中内容及record.c的地址分别为()。


  • 0x00、0xC00D
  • 0x00、0xC00E
  • 0x11、0xC00D
  • 0x11、0xC00E
推荐

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

发表于 2018-09-03 20:13:15 回复(0)
哎呀……以为只考察大小端和变量所占内存空间大小,忘记了结构体内部变量储存时需要对齐了
大小端总是忘记概念:
①大小端不是针对变量的,也就是变量a,b,c储存起来,仍然是按照地址增大的顺序依次储存的;
②大小端也不是针对位的,也就是说不能把数据转换成二进制,比如0001b然后再反过来写成1000b;
③大小端指的是单个变量内部的字节排序!
编辑于 2019-06-12 23:19:24 回复(2)