union
一个特殊的类,联合体;
union {
int a;
char c;
short s;
} un;
联合体内的各种数据共用一个内存,所以联合体所占内存就等于占用内存最大的成员的内存大小;
一个时刻只能给一个成员赋值,赋值后该内存的数据就被修改。
大小端
指内存中字节的储存方式:大端、小端;
比如要存储一个二进制数据00010010;
大端的存储方式就是将高序字节0001存储在高地址,低序字节0010存储在低地址;小端相反
使用union判断本机是大端还是小端存储方式
#include <iostream>
using namespace std;
int main() {
union {
int i;
char c;
} u;
u.i = 1;
if(u.c == 1)
cout << "小端" << endl;
else
cout << "大端" << endl;
}
原理很简单:联合体内的整型和字符数据存储位置一样,一旦你给整型赋值了,字符的数据值便是整型的第一段四分之一的低地址,如果是小端字节序,那么该低地址存储的就是“1”的低序字节,也就是“1”;反之就是大端;