联合——大小端

联合(union)

注意:命名开头大写!
它与结构的使用语法基本一样,区别是结构的每个成员都有独立的存储空间,而联合是所有成员共用一块存储空间(每个成员都从0地址开始),因此同一时刻只能有一个成员使用,只要有一个成员的值发生变化,其它成员的值也会随之变化
注意:联合的特点就是使用少量的内存对应多个标识符,使用它可以节约内存,在现代的编程中很少使用联合(不再需要极端地节约内存了)

相关重点:

1、计算大小,不需要计算对齐(每个成员都从0开始,天然对齐),但要注意补齐
2、利用联合判断系统的大小端
小端:低位地址存储低位数据(低存低,高存高)
大端:低位地址存储高位数据(低存高,高存低)

eg.		0x01020304,且有地址0x18存储4字节
		01|02|03|04  ->  大端
		04|03|02|01  ->  小段

:数据左大右小,地址左低右高

eg.一联合含char和int,用int存储数据,用char读取,因为char只从0地址(低地址)读取一位数据,看取得的是高位数据还是低位数据,就可以判断大小端

		d.num = 0x01020304;
		if(d.ch == 0x01)
		{
			printf("大端");
		}
		else
		{
			printf("小端");
		}
	或	printf("%s",d.ch == 0x01 ? "大端" : "小端");

结果为小端
:绝大多数的个人计算机都是小端,而服务器、网络设备都是大端(因此大端也叫:网络字节序)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章