C语言(十一)-共同体类型
共同体类型
- 写在前面
- 何时用
- 例题
写在前面
- 共用体类型就是,把几个变量储存在同一个地址开始的内存种,用到了覆盖技术,后一个数据覆盖前面的数据
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语言(十一)-共同体类型相关推荐
- C语言中不同类型的循环(Different types of loops in C)
C语言中有三种类型的循环:for,while,do-while. while循环先判断循环条件. while (condition) {//gets executed after condition ...
- 【Go语言】【14】GO语言的接口类型
1.什么是接口? 在面向对象的语言中,接口是用来限制实现类行为的.怎么理解这句话呢? 定义一个Person接口,我只会站在我的角度上考虑问题,比如Person(人),自然想到会吃饭.睡觉等: inte ...
- python程序设计语言是什么类型的语言-Python 是弱类型的语言 强类型和弱类型的语言区别...
Python 是弱类型的语言 在强类型的编程语言中,定义变量时要指明变量的类型,而且赋值的数据也必须是相同类型的,C语言.C++.Java 是强类型语言的代表. 下面我们以 C++ 为例来演示强类型语 ...
- 动态语言,静态类型,强类型定义语言,弱类型定义语言,
1 动态语言和静态语言 通常我们所说的动态语言.静态语言是指动态类型语言和静态类型语言. 1 动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时 ...
- 什么是python语言的动态类型机制_python的内存管理机制
一.python是一个什么样类型的语言 1.python是一种动态解释性强类型定义的高级.通用性编程语言. 解释型:执行的时候,才一条一条的解释成机器语言给计算机来执行.如:python.js.rub ...
- python中不属于整数类型_哪个选项不是Python语言的整数类型?
[单选题]下面不属于Python保留字的是: [单选题]关于Python的元组类型,以下选项错误的是: [单选题]关于整数类型的4种进制表示,哪个选项的描述是正确的? [简答题]阅读以下冒泡法排序代码 ...
- 【14】GO语言的接口类型
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://qingkechina.blog.51cto.com/5552198/167511 ...
- python语言有哪些类型的运算符_python(4)-变量 数据类型和运算符
第二章:变量.数据类型.运算符 思考:怎么理解变量和内存? 变量:就等同于上面图中的age name hobby 内存:存储位置里所装的内容 18 张三 打球 变量一定是存在某个地址,可以从变量名找到 ...
- C语言数据类型 / 变量类型 - C语言零基础入门教程
目录 一.C 语言数据类型分类 二.C 语言整形 1.无符号整形(16 位系统) 2.有符号整形(16 位系统) 3.int 和 long 区别 4.超出取值范围的整形 三.C 语言浮点型 float ...
最新文章
- 利用python读取txt文档的方法_利用Python读取txt文档的方法讲解
- 学习笔记Flink(三)—— Flink安装启动与监控
- ansible安装使用入门
- iZotope Neutron 3 Advanced for mac(智能混音插件包)
- Delegate如何进行类型转换?
- 复习-java运行的整个流程
- 项目经理的这几个常用套路,你一定要知道!
- 梯度离散_使用策略梯度同时进行连续/离散超参数调整
- Android Studio常用快捷键汇总(mac)
- TestStand-创建VI
- 【准备篇】1.Simulink-F28335自动代码生成开发环境搭建
- 对象的copy和自动归档Archive操作
- DCOS(centos 7.4/7.6)
- 获取嵌入式Linux设备下的触摸设备节点
- 后凯恩斯学派给出的不同答案-中国视角下的宏观经济
- 清华大学美女学霸“华智冰”是假的?--人工智能(AI)的前世今生
- vue+elementUi+dialog封装自定dialog部分属性,并打包成插件、npm install mj-dialog --save、display、justify、between
- 分享一个简单好看的html的表格table(个人简历的html表格),vue table,以及vue打印(简单好用的vue打印插件)
- 散射介质成像中弹道光子、蛇形光子、散射光子的概念
- oracle日期导出mysql_Oracle 获取系统日期时间,导出数据库