联合体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,大端模式:内存的低位存数据的高位,内存的高地址存数据的低位。 低高高低。

相关推荐
l1t1 分钟前
利用DeepSeek辅助修改luadbi-duckdb读取DuckDB decimal数据类型
c语言·数据库·单元测试·lua·duckdb
GOATLong21 分钟前
git使用
大数据·c语言·c++·git·elasticsearch
学习路上_write3 小时前
STM32回调函数使用/定时器/GPIO/串口/
c语言·单片机·嵌入式硬件
czy87874754 小时前
C语言实现状态模式
c语言·状态模式
鲁邦通物联网4 小时前
开发者实践:机器人梯控的 API 对接、边缘调度与 MQTT 解耦
机器人·服务机器人·机器人梯控·agv梯控·非侵入式采集
江湖独行侠4 小时前
每日一篇-【ICRA2025】-->任务感知语义地图:超越指令的自主机器人任务分配
机器人
czy87874754 小时前
C语言实现迭代器模式
c语言·迭代器模式
GilgameshJSS5 小时前
STM32H743-ARM例程36-DNS
c语言·arm开发·stm32·单片机·嵌入式硬件
星辰pid6 小时前
基于ROS与YOLOv3的智能采购机器人设计(智能车创意组-讯飞智慧生活组)
人工智能·opencv·yolo·机器人
czy87874756 小时前
C语言实现策略模式
c语言·排序算法·策略模式