图片[1]yxqzC语言的共同体yxqz小余塘

作者:余小小

日期:2021-10-02

共用体类型概念

  • 共用体是一种特殊的数据类型,允许在相同的内存位置存储不同的数据类型

  • 可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值:这个意思是说,共用体中的多个属性,只能有一个是有值的,具体是哪一个属性呢,就是占用空间最大的那个属性

  • 在简单的说,共用体就是连体兄弟,可能你不连体,就只有一个,如果有多个,就多个脑袋,但是用的身体是一个,所以大哥吃饭,小弟就暂时下线。

  • 必须使用关键字:union

  • 但是任何时候只能有一个成员带有值

union:共同

学生会:the student‘s union

中文系学生会:the student’s union of the Department of the Chinese Lanuage and Literature

共用体类型结构

union 共用体数据类型名字
{
  属性1,
属性2
  ...
  member definition;
} 变量名字;

 

在共用体类型的最后一个分号之前,可以指定一个或多个共用体变量
union Data
{
  int i;
  float f;
  char  str[20];
} data;

 

相同的内存位置,可以存储多个多种类型的数据。

共用体占用的内存应足够存储共用体中最大的成员

#include <stdio.h>
#include <string.h>

union Data
{
  int i;
  float f;
  char str[20];
};

int main( )
{
  union Data data;        

  printf( "当前data共用体变量占用的空间是 : %d\n", sizeof(data));

  return 0;
}

 

访问共用体成员

  • 共用体变量打点调用

  • 共用体变量打点调用

  • 共用体变量打点调用

#include <stdio.h>
#include <string.h>

union Data
{
  int i;
  float f;
  char  str[20];
};

int main( )
{
  union Data data;        

  data.i = 10;
  data.f = 220.5;
  strcpy( data.str, "C Programming");

  printf( "data.i : %d\n", data.i);
  printf( "data.f : %f\n", data.f);
  printf( "data.str : %s\n", data.str);

  return 0;
}

 

 

以看到共用体的 if 成员的值有损坏,因为最后赋给变量的值占用了内存位置,这也是 str 成员能够完好输出的原因。(大哥霸占了兄弟的产业)

既然每次只能有一个成员能够使用,那么就分批次让兄弟们使用

#include <stdio.h>
#include <string.h>

union Data
{
  int i;
  float f;
  char  str[20];
};

int main( )
{
  union Data data;        

  data.i = 10;
  printf( "data.i : %d\n", data.i);
 
  data.f = 220.5;
  printf( "data.f : %f\n", data.f);
 
  strcpy( data.str, "C Programming");
  printf( "data.str : %s\n", data.str);

  return 0;
}

 

共用体和结构体的区别

我这里做一下个人的总结哦

  1. 结构体中的属性,都是单独的空间的哦,可以同时给结构体中的属性同时赋值

  2. 共用体中的属性,同一时刻只能有一个属性使用空间

  3. 共用体的关键字是union

  4. 结构体的关键字是struct

  5. 共用体和结构体都是变量打点调用属性获取属性值

  6. 结构体变量所占内存长度是其中最大字段大小的整数倍

  7. 共用体变量占用的长度是其中属性最大的空间,已经规定好了的哦

  8. 共用体的作用:节省内存,有两个很长的数据结构,不会同时使用

文章版权声明 1、本网站名称:小余塘
2、本站永久网址:https://www.yxqz.top/
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长QQ2457431511进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容