1.共用体
一句话解释共用体就是:对同一片内存空间的不同解析方式。
2.大小端模式
大端模式:在内存中高地址存放低字节,低地址存放高字节
小端模式:在内存中高地址存放高字节,低地址存放低字节
3.代码测试大小端
(1)共用体方式
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//共用体判断大小端
union myunion
{
char a;
int c;
};
int main(int argc,char *argv[])
{
/* 使用共用体测试大小端 */
union myunion union1;
printf("sizeof(myunion) = %d\n",sizeof(union myunion)); //获取共用体大小
printf("&union1.a = %p\n",&union1.a); //打印a的地址
printf("&union1.c = %p\n",&union1.c); //打印c的地址
union1.c = 0x12345678;
if(union1.a == 0x78)
{
printf("小端模式\n");
}
else if(union1.a == 0x12)
{
printf("大端模式\n");
}
return 0;
}
(2)指针方式
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//指针方式判断大小端
int main(int argc,char *argv[])
{
/* 使用指针测试大小端 */
int a = 0x12345678;
if(*(char *)&a == 0x78)
{
printf("小端模式\n");
}
else if(*(char *)&a == 0x12)
{
printf("大端模式\n");
}
return 0;
}
4.总结
共用体本质上就是操作内存的方式,因此从本质上来说两者没有任何区别,测试结果完全一致。
本文介绍了共用体的概念及其作为内存操作方式的应用,并通过两种方法(共用体和指针)展示了如何检测计算机系统的大小端模式。

2050

被折叠的 条评论
为什么被折叠?



