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

联合中存储平方差

某联合中有两个结构体,一个结构体存放两个变量的值,另一个结构体中存放它们的平方差。得到平方差后,就不用再保存这两个变量。

在C语言中,union(联合)是一种特殊的数据类型,它允许在相同的内存位置存储不同的数据类型。然而,union的大小并不是其所有成员大小的总和,而是其最大成员的大小。这是因为union在任何给定时间只能存储其成员之一的值,所以只需要足够的空间来存储最大的那个成员。

实现代码

typedef union 
{
    struct 
    {
        char v;
        char d;
        int s;
    }t1;
    struct
    {
      int a[2];
      char *p;
    }t2;
}u_type;
void get_add(u_type *up,int *dest);
void get_diff(u_type *up,int *dest);

void get_add(u_type *up,int *dest)
{
    *dest=up->t2.a[0]+up->t2.a[1];
}

void get_diff(u_type *up,int *dest)
{
    *dest=up->t2.a[0]-up->t2.a[1];
}

void main()
{
    int a,b;
    u_type my_union;
    i=sizeof(my_union.t1);     //结构体t1申请的长度
    j=sizeof(my_union.t2);  //结构体t2申请的长度

    k=sizeof(my_union);       //联合my_union申请的长度
    my_union.t2.a[0]=8;
    my_union.t2.a[1]=2;
    get_add(&my_union,&a);  //和放在a中
    get_diff(&my_union,&b);  //差放在b中
    my_union.t1.s=a*b;         //平方差存放在结构体t1的变量s中。
}

联合申请的长度是结构体t1和结构体t2中需要的连续空间最大的。

运行结果

 

 

 

http://www.dtcms.com/a/63971.html

相关文章:

  • FPGA 实现 OV5640 摄像头视频图像显示
  • 【spring】springAOP
  • navicat16 升级到 navicat17 之后原来的连接找不到了 mac用户
  • 侯捷 C++ 课程学习笔记:进阶语法之lambda表达式(二)
  • 利用8个参数定义一个汽轮机,然后根据这8个参数生成汽轮机性能试验时的测点清单-pycharm-源代码(适用所有类型汽轮机)
  • 【搜索页】- 功能流程
  • OpenHarmony-SELinux配置
  • 【git】 Could not read from remote repository.
  • 【Linux】线程池、单例模式、死锁
  • Python爬虫:从人民网提取视频链接的完整指南
  • 练习-纪律问题(幂运算)
  • react__jsx语法
  • Angular由一个bug说起之十四:SCSS @import 警告与解决⽅案
  • 【Godot4.0】EasyClock时钟组件
  • 自动同步多服务器下SQL脚本2.0
  • Python:函数式编程
  • 达梦数据库中插入导出图片的方法与应用
  • uniapp+微信小程序+最简单局部下拉刷新实现
  • 看不见的“健康杀手”来袭,微塑料竟威胁人体与植物光合作用
  • 多肽纯度如何选择?
  • 【2步解决】phpstudy开机自启(自动启动phpstudy、mysql、nignx或apache、自动打开网址)
  • 自学Java-Java高级技术(单元测试、反射、注解、动态代理)
  • 深度迁移学习实战指南:从理论到产业级应用
  • Windows Wise Care 365 PRO-中文便携版
  • 【C++入门】变量和基本类型
  • Win10 下搭建免费的 FTP 服务器 FileZilla
  • 如何简单获取三个月免费试用的SSL证书
  • 处理Java中的异常
  • STC 51单片机64——关于STC8H的ADC回程误差问题
  • starrocks批量启停脚本