共同体类型

  • 写在前面
  • 何时用
    • 例题

写在前面

  • 共用体类型就是,把几个变量储存在同一个地址开始的内存种,用到了覆盖技术,后一个数据覆盖前面的数据
union 共用体名
{成员列表
}变量列表

声明定义方式与结构体类型变量一致,初始化方式不同。结构体变量可以给出初始化表一次性全部初始化,但是共用体变量一次只能初始化一个变量成员。

union Data
{int i;char ch;float score;
}

这说明共用体可以存放三种数据,但是每一瞬时只能存一种数据,而且如果对其成员初始化的化,留下的是最后赋值的哪一个,前边赋值的变量会被覆盖,比如

union Data a;
a.i=1;
a.ch="A";
a.score=99.0;

如果输出a.i就不会是1;

  • 不能直接引用共用体变量但是可以引用成员,这一点与结构体也一样,因为结构体和共用体变量里边存储不同了不同类型的变量,出储存区按不同类型存放数据,有不同的长度,如果直接引用变量名,系统不知道输出哪一个成员。

  • 共用体变量的地址和其成员的地址是同一个地址。

何时用

在数据处理的时候,有时候需要对一段空间安排不同的用途,这时候用共用体数据比较方便,增加程序的灵活性。

例题

若干人员,包含老师和学生。老师信息包括学号,名字,性别和职务。学生信息包括学号,名字,姓名和班级。这个时候班级和职务就可以用共用体

#include<stdio.h>
struct
{int num;char name[20];char sex;char job;union{int clas;char position[20];}category;
}people[2];int main()
{int i,j;printf("please inout information:\n");for (i = 0; i < 2; i++){scanf_s("%d", &people[i].num);scanf_s("%s", people[i].name,sizeof(people[i].name));scanf_s("%c",&people[i].sex,sizeof(&people[i].sex));scanf_s("%c",&people[i].job,sizeof(&people[i].job));for (j = 0; j < 10000; j++);if (people[i].job == 's'){printf("请输入班级:");scanf_s("%d", &people[i].category.clas);}else if (people[i].job == 't'){printf("请输入职务:");scanf_s("%c", &people[i].category.position, sizeof(people[i].category.position));}elseprintf("this is an error");}printf("output\n");printf("num     name        sex      job      class/position");for (i = 0; i < 2; i++){if (people[i].job == 's'){printf("%d    %s       %c       %c    %d", people[i].num, people[i].name, people[i].sex, people[i].job, people[i].category.clas);}elseprintf("%d    %s       %c       %c    %c", people[i].num, people[i].name, people[i].sex, people[i].job, people[i].category.position);}
}

有些错误但是意思到了

C语言(十一)-共同体类型相关推荐

  1. C语言中不同类型的循环(Different types of loops in C)

    C语言中有三种类型的循环:for,while,do-while. while循环先判断循环条件. while (condition) {//gets executed after condition ...

  2. 【Go语言】【14】GO语言的接口类型

    1.什么是接口? 在面向对象的语言中,接口是用来限制实现类行为的.怎么理解这句话呢? 定义一个Person接口,我只会站在我的角度上考虑问题,比如Person(人),自然想到会吃饭.睡觉等: inte ...

  3. python程序设计语言是什么类型的语言-Python 是弱类型的语言 强类型和弱类型的语言区别...

    Python 是弱类型的语言 在强类型的编程语言中,定义变量时要指明变量的类型,而且赋值的数据也必须是相同类型的,C语言.C++.Java 是强类型语言的代表. 下面我们以 C++ 为例来演示强类型语 ...

  4. 动态语言,静态类型,强类型定义语言,弱类型定义语言,

    1 动态语言和静态语言 通常我们所说的动态语言.静态语言是指动态类型语言和静态类型语言.    1 动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时 ...

  5. 什么是python语言的动态类型机制_python的内存管理机制

    一.python是一个什么样类型的语言 1.python是一种动态解释性强类型定义的高级.通用性编程语言. 解释型:执行的时候,才一条一条的解释成机器语言给计算机来执行.如:python.js.rub ...

  6. python中不属于整数类型_哪个选项不是Python语言的整数类型?

    [单选题]下面不属于Python保留字的是: [单选题]关于Python的元组类型,以下选项错误的是: [单选题]关于整数类型的4种进制表示,哪个选项的描述是正确的? [简答题]阅读以下冒泡法排序代码 ...

  7. 【14】GO语言的接口类型

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://qingkechina.blog.51cto.com/5552198/167511 ...

  8. python语言有哪些类型的运算符_python(4)-变量 数据类型和运算符

    第二章:变量.数据类型.运算符 思考:怎么理解变量和内存? 变量:就等同于上面图中的age name hobby 内存:存储位置里所装的内容 18 张三 打球 变量一定是存在某个地址,可以从变量名找到 ...

  9. C语言数据类型 / 变量类型 - C语言零基础入门教程

    目录 一.C 语言数据类型分类 二.C 语言整形 1.无符号整形(16 位系统) 2.有符号整形(16 位系统) 3.int 和 long 区别 4.超出取值范围的整形 三.C 语言浮点型 float ...

最新文章

  1. 利用python读取txt文档的方法_利用Python读取txt文档的方法讲解
  2. 学习笔记Flink(三)—— Flink安装启动与监控
  3. ansible安装使用入门
  4. iZotope Neutron 3 Advanced for mac(智能混音插件包)
  5. Delegate如何进行类型转换?
  6. 复习-java运行的整个流程
  7. 项目经理的这几个常用套路,你一定要知道!
  8. 梯度离散_使用策略梯度同时进行连续/离散超参数调整
  9. Android Studio常用快捷键汇总(mac)
  10. TestStand-创建VI
  11. 【准备篇】1.Simulink-F28335自动代码生成开发环境搭建
  12. 对象的copy和自动归档Archive操作
  13. DCOS(centos 7.4/7.6)
  14. 获取嵌入式Linux设备下的触摸设备节点
  15. 后凯恩斯学派给出的不同答案-中国视角下的宏观经济
  16. 清华大学美女学霸“华智冰”是假的?--人工智能(AI)的前世今生
  17. vue+elementUi+dialog封装自定dialog部分属性,并打包成插件、npm install mj-dialog --save、display、justify、between
  18. 分享一个简单好看的html的表格table(个人简历的html表格),vue table,以及vue打印(简单好用的vue打印插件)
  19. 散射介质成像中弹道光子、蛇形光子、散射光子的概念
  20. oracle日期导出mysql_Oracle 获取系统日期时间,导出数据库

热门文章

  1. 2020年2月份远程微课堂培训心得体会
  2. MySQL数据库技术 第二版 章末 答案—单元8
  3. UE4通过鼠标在pawn四周移动摄像头
  4. 【AI绘图】一、stable diffusion的发展史
  5. vue项目打包wap2app项目生成apk保姆级教程适合新手看,建议收藏
  6. 仿「ONE · 一个」 的微信小程序 - 每日一个
  7. 删除elemnt UI ——el-popper文字提示的小三角
  8. js 获取剪切板内容
  9. 在有权限的情况下,使用CMD开启3389端口
  10. 自然数平方和公式推导