某计算机存储器按字节变址,采用小端方式存放数据。假定编译器规定int 型和 short 型长度分别为 32 位和 16 位,并且数据按边界对齐存储。某 C 语言程序段如下:
若record 变量的首地址为 0xC008,则地址 0xC008 中内容及 record.c 的地址是( )。
解析:首先你要明白的只是1.OXc008只表示一个字节的位置标记,2.小端模式是低位低地址,3.内存对其准则。下面开始分析
已知record.a=273转换为16进制就是0x00000111,且record的首地址就是a的起始地址,a为int类型占4个字节,所以0xc008 0xc009 0xc00A 0xc00B 对应的分别是11 01 00 00 ,如果在vs下查看可能一行就显示完了。所以0xc008对应的是11.
下面分析record.c的地址,不知道内存对其的可以去我的博客看https://blog.csdn.net/it_iverson/article/details/74790127
a的地址前面 已经阐述为分别为0xc008 0xc009 0xc00A 0xc00B,那么b就紧接着从0xc00C开始分配,占一个字节,此时该分配c但是c是两个字节,前面已经分配了5个字节了,不是2的倍数,所以对其一个字节到0xc00d,所以c从0xc00e开始分配地址.所以record.c的起始地址是0Xc00E.