当前位置: 首页 > news >正文

C语言基础知识--联合体

// 联合体关键字:union 也叫共用体
// 联合体 :多个成员变量共用一个存储空间
// 联合体的空间大小是  联合体中成员变量中存储空间最大的那个变量
// 联合体的大小计算
// 当最大成员大小不是最大对齐数的整数倍时,会对齐到最大对齐数整数倍
// 联合体也存在内存对齐
// union un {
//   int a;
//   char b[5];
// };
// union xocde {
//   int a;
//   short b[7];
// };
// int main()
// {
//  printf("%zd\n", sizeof(union un));     // 8
//  printf("%zd\n", sizeof(union xocde));  // 16
//  return 0;
// }
// 为最大的成员变量分配存储空间,所有的成员都用这个存储空间
// 同时只能使用一个成员// union un {
//  int a;
//  char b;
// };
// int main () {
//   union un u ={0};
//   printf("%zd\n", sizeof(u));
//   return 0;
// }// 礼品清单🧾
//
// struct gift_order {
//
//    // common info
//    double price;
//    char type[20];
//
//    // specific info
//    union {
//      struct gift_book {
//        char author[20];
//        char publisher[20];
//        int pages;
//      } book;
//      struct gift_cd {
//        char singer[20];
//        char album[20];
//        int tracks;
//      }stereotype;
//    };
// };
// int main () {
//    struct gift_order order = {
//       .price = 10.0,
//       .type = "book",
//       .book = {
//          .author = "Tom",
//          .publisher = "Tom's Publisher",
//          .pages = 100
//       }
//    };
//   struct gift_order stereotype = {
//       .price = 10.0,
//       .type = "stereotype",
//       .stereotype = {
//          .singer = "Tom",
//          .album = "Tom's Album",
//          .tracks = 10
//       }
//    };
//    printf("The gift is %s\n", order.type);
//    printf("The book is %s by %s\n", order.book.author, order.book.publisher);
//    printf("The stereotype is %s by %s\n", stereotype.stereotype.singer, stereotype.stereotype.album);
//    return 0;
// }
// 联合体判断当前机器是大端还是小端// union un {
//  int a;
//  char b;
// };
// int main() {
//    union un u; // 初始化一个变量 充分利用了联合体取出1个字节的便捷性
//    // 00 00 00 01
//    // 01 00 00 00
//    u.b = 1;
//    if (u.a == 1) {
//      printf ("小端\n");
//    }
//    else {
//      printf ("大端\n");
//    }
// }
http://www.dtcms.com/a/276266.html

相关文章:

  • Mybatis的一级缓存与二级缓存
  • 电网失真下单相锁相环存在的问题
  • STM32第二十一天定时器TIM
  • docker搭建 与镜像加速器
  • LeetCode经典题解:3、无重复字符的最长子串
  • 【Elasticsearch】post_filter
  • 【MATLAB代码】Chan方法解算TOA,用于三维目标的定位,锚点数量可自适应。订阅专栏后可查看完整代码
  • Windows环境下解决Matplotlib中文字体显示问题的详细指南
  • PyTorch神经网络实战:从零构建图像分类模型
  • linux----------------------线程同步与互斥(上)
  • 搭建MySQL读写分离
  • LiteFlow源码
  • Mamba架构的模型 (内容由deepseek辅助汇总)
  • 手把手教你 Aancond 的下载与 YOLOV13 部署(环境的创建及配置下载)以及使用方法,连草履虫都能学会的目标检测实验!
  • net.createServer详解
  • Python后端项目之:我为什么使用pdm+uv
  • 模拟注意力:少量参数放大 Attention 表征能力
  • hiredis: 一个轻量级、高性能的 C 语言 Redis 客户端库
  • 深入解析C#接口实现的两种核心技术:派生继承 vs 显式实现
  • Java 21 虚拟线程
  • 浏览器宏任务的最小延时:揭开setTimeout 4ms的神话
  • java中的main方法
  • window7,windows10,windows11种系统之间实现打印机共享
  • 创客匠人:从定位逻辑看创始人 IP 如何驱动 IP 变现
  • CompareFace使用
  • Kimi K2万亿参数开源模型原理介绍
  • 【读书笔记】《C++ Software Design》第二章:The Art of Building Abstractions
  • Ruby如何采集直播数据源地址
  • OpenEuler操作系统中检测插入的USB设备并自动挂载
  • 【数据结构】反射、枚举 和 lambda表达式