中国建设银行网站-个人客,大型集团公司网站建设方案,滴滴出行app开发公司,网站建设及相关流程图以下内容源于网络资源的学习与整理#xff0c;如有侵权请告知删除。 一、高地址和低地址 二、高字节低字节 如int a16777220#xff0c;化为十六进制是0x01 00 00 04#xff0c;则04属于低字节#xff0c;01属于高字节。 三、大小端模式 #xff08;1#xff09;如果a在内…以下内容源于网络资源的学习与整理如有侵权请告知删除。 一、高地址和低地址 二、高字节低字节 如int a16777220化为十六进制是0x01 00 00 04则04属于低字节01属于高字节。 三、大小端模式 1如果a在内存中的存放顺序为下图即低字节存放在高地址则为大端模式 2如果a在内存中的存放顺序为下图即低字节存放在低地址则为小端模式 3如何互换通过移位操作再或 四、存放顺序 数据在内存中存放的原则 1一个整数类型内部 低地址存储低位高地址存储高位。比如int a1则存储情况为0000高地址 0000 0000 0001低地址。 2若干个局部变量在栈中存储的 先定义的高地址后定义的低地址。 3类、结构体或数组的元素 先定义的低地址后定义的高地址。 五、测试说明 1整数类型内部低地址存储低位高地址存储高位。 #includeiostream
using namespace std;union U
{char str[2];short int num;
};int main()
{U u;u.str[0] 10;//存放在低地址0000 1010u.str[1] 1;//存放在高地址 0000 0001cout u.num endl;//组合的时候整数类型内部低地址存储低位高地址存储高位因此是0000 0001 0000 1010 266system(PAUSE);return 0;
} 2若干个局部变量在栈中存储的先定义的高地址后定义的低地址。 类、结构体、数组中的元素先定义的低地址后定义的高地址 class Test {
public:int m;int n;
};
int main()
{int a;char b;int c[10];Test t;cout (size_t)a endl;//结果1cout (size_t)b endl;//结果2cout (size_t)c endl;//结果3cout (size_t)t endl;//结果4cout (size_t)t.m endl;//结果5cout (size_t)t.n endl;//结果6system(PAUSE);return 0;
} 结果1结果2结果3结果4结果5结果6 分析 结果1结果2结果3结果4是因为a、b、c、t都是局部变量在栈上存储栈是从高地址到低地址因此地址逐渐减小。 结果5结果6是因为结构体内部先定义的地址小后定义的地址大这与类内的成员数组总的元素都是类似的。 分析它们的数值差可以发现字节对齐问题数组名占用4字节等问题。 总的来说具体的地址需要考虑“栈的高地址到低地址”、“字节对齐”、“数组”这样的特殊情况等等。