当前位置: 首页 > 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中需要的连续空间最大的。

运行结果

 

 

 

相关文章:

  • 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+微信小程序+最简单局部下拉刷新实现
  • 看不见的“健康杀手”来袭,微塑料竟威胁人体与植物光合作用
  • 多肽纯度如何选择?
  • 菲律宾华人“钢铁大王”撕票案两主谋落网,部分赎金已被提取
  • 陕西籍青年作家卜文哲爬山时发生意外离世,终年28岁
  • 改造老旧小区、建立“一张图”,五部委将多举措支持城市更新
  • 住建部:目前已累计建设改造各类市政管网50万公里
  • 交通运输局男子与两名女子办婚礼?官方通报:未登记结婚,开除该男子
  • 上海肺科医院院长陈昶:临床中的痛点,正是新技术诞生的起点