联合体一站式教学(内含联合体的介绍,应用实例,联合体大小比较原则和方法,以及为什么要用联合体)----用两种方法判断当前计算机的大小端

简介: 联合体一站式教学(内含联合体的介绍,应用实例,联合体大小比较原则和方法,以及为什么要用联合体)----用两种方法判断当前计算机的大小端
#define _CRT_SECURE_NO_WARNINGS 1 
#include<stdio.h>
//联合体/共用体--------共用一块空间,空间至少是最大成员的大小
//联合体是一种特殊的自定义类型,这种类型定义的变量包含一系列的成员,特征是这些成员共用一块空间
//union  un//创建联合体类型
//{
//    char c;//1
//    int i;//4
//};
//int main()
//{
//    union un u={10};//同一时间,联合体成员只能改其中的一个值
//    u.i = 1000;//u.i和u.c只能有一个有效,因为共用一个空间
//    u.c = 100;
//    printf("%d\n", sizeof(u));//4
//    printf("%p\n", &u);//000000176572F8F4
//    printf("%p\n", &(u.c));//000000176572F8F4
//    printf("%p\n", &(u.i));//000000176572F8F4
//    return 0;
//}
//判断当前计算机的大小端
//int check_sys()和check_sys2()是两种实现方法
//法一:
int check_sys()//使用函数,并不进行打印,用返回值确定是大端还是小端,使之更加灵活
{
    int a = 0x11223344;//a是int型,4个字节,,0x11223344是十六进制,也是4个字节
//44是低位,11是高位,   在内存中,如果由低地址到高地址为11223344,则低位放在高地址,是大端存储
//                              如果由低地址到高地址为44332211,则低位放在低地址,是小端存储
    if ((*(char*)&a) = 4)//&a拿出地址,(char*)强制类型转换为char,*解引用.目的是拿出前两个字节
    {
        return 1;//小端
    }
    else
    {
        return 0;//大端
    }
}
//法二:
int check_sys2()
{
    union U
    {
        char c;
        int i;
    }u;//在联合体里面创建个变量u
    u.i = 1;
    return u.c;//目的:在联合体 c i共用一个空间,而char正好是int的前四分之一部分,所以可以判断
}
int main()
{
    int ret=check_sys();//写函数的目的是让其更加独立!
    if (ret == 1)
        printf("小端\n");//小端---对照check_sys()
    else
        printf("大端\n");
    int check_sys2();
        if (ret == 1)
            printf("小端\n");//小端----对照check_sys2();
        else
            printf("大端\n");
    return 0;
}
//使用场景举例:学校里有老师和同学,老师同学都有性别,身高,爱好,职务等,
//那么如何区分老师学生呢,此时用联合体,并把联合体放在第一个,其他放后,就能区分
//联合体大小的计算
//空间至少是最大成员的大小,当最大成员大小不是最大对齐数的整数倍的时候,
//就要对齐到最大对齐数的整数倍
union Un
{
    char a[5];//1----5
    int i;//4----必须是最大对齐数4的倍数,且大于5,就是8
};
union Vn
{
    short a[5];//2----10
    int i;//4----必须是最大对齐数4的倍数,且大于10,就是12
};
int main()
{
    union Un u;
    printf("%d\n", sizeof(u));//8
    union Vn v;
    printf("%d\n", sizeof(v));//12
    return 0;
}

cfefa34411cf407caf234ee0cde4fc0c.png

相关文章
|
Java Linux 程序员
linux实现定时备份文件到百度网盘详细教程
作为一个程序员,数据备份尤为重要,本文主要介绍的是将服务器上的某文件定时备份到百度网盘中。主要实现思路是:安装pip、byp --&gt; 百度网盘进行授权登陆 --&gt; 使用crontab+bypy实现定时自动数据备份。
1499 0
|
3月前
|
存储 安全 Linux
Proxmox VE 9.0 Beta - 开源虚拟化管理平台
Proxmox VE 9.0 Beta - 开源虚拟化管理平台
385 0
Proxmox VE 9.0 Beta - 开源虚拟化管理平台
|
9月前
|
机器学习/深度学习 监控 数据可视化
提升数据科学工作流效率的10个Jupyter Notebook高级特性
Jupyter Notebooks 是数据科学家和Python开发人员的核心工具,提供代码执行、文本编辑和数据可视化的无缝整合。本文介绍其高级功能,如Magic命令优化代码执行、IpyWidgets增强交互性、自动重载模块更新、内联文档系统、可折叠标题、nbconvert多格式转换、变量监控、JupyterLab集成开发环境、终端集成和调试系统等,助您提升工作效率并充分发挥Jupyter的潜力。
364 22
|
5月前
|
人工智能 测试技术 API
飞桨x昇腾生态适配方案:11_静态OM推理
昇腾AI推理工具`ais_bench`基于ACL开发,支持命令行快速推理与性能测试(吞吐率、时延等),并提供相关API。用户需下载适配环境的`aclruntime`和`ais_bench`的whl包后通过pip安装。设置环境变量后,可通过多种场景使用工具:纯推理(默认输入全0数据)、调试模式(获取详细参数与耗时信息)、文件/文件夹输入(指定Numpy文件或目录)、以及多Device并行推理。例如,BERT模型需按顺序传入三个文件夹对应其输入参数。工具输出包括吞吐率、耗时等关键指标,助力高效模型性能评估。
253 0
|
7月前
|
Web App开发 人工智能 机器人
牛逼,这款开源聊天应用竟能一键召唤多个AI助手,跨平台通话神器!
`JiwuChat`是一款基于Tauri2和Nuxt3构建的轻量化多平台即时通讯工具,仅约8MB体积却集成了**AI群聊机器人**、**WebRTC音视频通话**、**屏幕共享**等前沿功能。一套代码适配Windows/macOS/Linux/Android/iOS/Web六大平台,堪称开发者学习跨端开发的绝佳样板!
252 8
|
JSON 前端开发 JavaScript
使用html,css,js 实现一个龙年春节祝福卡片效果
使用html,css,js 实现一个龙年春节祝福卡片效果
384 123
|
JavaScript
Vue3加载中(Spin)
该加载组件 `Spin.vue` 可高度自定义加载状态,包括是否显示加载 (`spinning`)、尺寸 (`size`)、描述文案 (`tip`)、加载指示符 (`indicator`) 及其颜色 (`color`) 和其他细节参数。支持多种加载样式如点、线、圆环等,并允许调整动画速度和初始旋转状态。组件基于 Vue 构建,易于集成到任何项目中,提供丰富的视觉反馈。
206 5
Vue3加载中(Spin)
|
10月前
|
存储 SQL 安全
API 数据接口使用与安全指南
本文介绍了API数据接口的基础知识、使用流程及安全要点。首先,定义了API及其在现代技术生态中的重要性,接着详细阐述了API使用的六个步骤:明确需求、搜索筛选、注册获取密钥、解读文档、环境搭建与集成、数据处理与应用集成。最后,强调了API安全的重要性,包括身份验证、数据加密、防范攻击及安全监控等方面,确保API的安全稳定运行。
|
存储 人工智能 弹性计算
通义万相AI绘画创作评测及图文搭建教程
【7月更文挑战第4天】阿里云的通义万相是AI绘画模型,结合ECS、OSS和API服务,提供无缝创作环境。用户上传图片至OSS,模型通过签名URL下载图片,然后生成AI艺术作品。模型服务具有高性能、易集成的特点,适用于多种场景如设计、广告等。用户可按指示在阿里云官网注册、充值、开通服务并部署。项目评测显示,其集成便捷、响应快、泛化能力强,但仍有改进空间,如增加图像控制选项和批量处理能力。相对于竞品,通义万相在成本、易用性和应用场景上有竞争力,值得推荐。
11534 9
|
前端开发
无法解锁/var/lib/dpkg/lock-frontend和无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend)【解决方案】
无法解锁/var/lib/dpkg/lock-frontend和无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend)【解决方案】