C语言的一些关键字(八)

来源:互联网 发布:两个有序数组的中位数 编辑:程序博客网 时间:2024/06/05 15:48

关键字-union

有时候需要将几种不同类型的变量存放到同一段内存单元中。

分配空间字对齐!4的整数倍!

union node
{ char ch[7];
  int num;
};      占8字节!

可以把一个整型变量、一个字符型变量、一个实型变量放在同一个地址开始的内存单元中。即使几个不同的变量共占同一段内存空间。

所谓“共用体(union)”是指使几个不同的变量共占同一段内存的数据类型。

假设网络节点A 和网络节点B 中的通信协议涉及四类报文,报文格式为“报文类型字段+报文内容的结构体”,四个报文内容的结构体类型为STRUCTTYPE1~STRUCTTYPE4,请编写程序以最简单的方式组织一个统一的报文数据结构。


CPU存取数据都是从低地址开始开始存放,一个变量占用的内存空间往往不止一个字节,但是不同类型的CPU存放数据的顺序不同,因而产生了字节序的概念,按存放顺序的不同分为大端字节序和小端字节序两种: 
Big_endian 大端字节序: 数据的高字节位存储在低地址对应的存储单元;
Little_endian 小端字节序:数据的低字节位存放在低地址对应的存储单元。

如果我们将0x1234abcd 写入到以0x0000 开始的内存中,则Little endian 和Big endian 模式的存放结果如下:
   

0 0
原创粉丝点击