联合体union的特殊之处

一个联合体union的长度等于其内部长度最大的成员的长度。

union的所有成员共享同一块内存空间,可以利用这个特性读取数据的字节存储方式。

c 复制代码
#include <stdio.h>

int check_endian() {
    union {
        short s;        // 2 字节(short)
        char c[2];      // 2 字节(char)
    } u;
    u.s = 0x0102;       // 小端:0x02 0x01;大端:0x01 0x02
    return u.c[0] == 0x02;  // 小端返回 1,大端返回 0
}

int main() {
    if (check_endian()) {
        printf("Little-Endian\n");
    } else {
        printf("Big-Endian\n");
    }
    return 0;
}

1,小端模式:内存的低地址存数据的低位,内存的高地址存数据的高位。低低高高。

2,大端模式:内存的低位存数据的高位,内存的高地址存数据的低位。 低高高低。

相关推荐
字节高级特工2 小时前
【Linux篇】补充:消息队列和systemV信号量
linux·运维·服务器·c语言·数据库
带电的小王4 小时前
VLA--Gemini Robotics On-Device: 将AI带到本地机器人设备上
人工智能·机器人
Star在努力5 小时前
15-C语言:第15~16天笔记
c语言·笔记·算法
SoveTingღ6 小时前
【C语言】数组和指针一样吗?
c语言·unix·指针·数组·嵌入式软件
晨非辰8 小时前
#C语言——学习攻略:深挖指针路线(三)--数组与指针的结合、冒泡排序
c语言·开发语言·数据结构·学习·算法·排序算法·visual studio
aiprtem15 小时前
LVGL + ESP-Brookesia 嵌入式模拟桌面应用开发
linux·c语言·物联网
遇见尚硅谷16 小时前
C语言:20250728学习(指针)
c语言·开发语言·数据结构·c++·笔记·学习·算法
☆璇16 小时前
【C++】C/C++内存管理
c语言·开发语言·c++
拳里剑气19 小时前
C语言:顺序表(上)
c语言·开发语言·数据结构·学习方法
Star在努力19 小时前
15-C语言:第15天笔记
c语言·笔记·算法