[c/c++] programming之路(27)、union共用体
共用体时刻只有一个变量,结构体变量同时并存
一、创建共用体的三种形式
#include<stdio.h>
#include<stdlib.h>
#include<string.h> union info{
int price;
char str[];
}data1,data2,*p,data[]; //第一种创建形式
union info dataA,dataB,*q,dataN[];//第二种形式
union{ //第三种形式:匿名共用体,限制共用体的数量
char str[];
int price;
}a,b,c; void main(){
union info in1;
in1.price=;
strcpy(in1.str,"联想");
printf("%d\n",sizeof(union info));//共用体的长度为其中某个变量的最长长度
printf("%d,%s\n",in1.price,in1.str);//任何时刻,共用体同时只能有一个变量存在 system("pause");
}
二、共用体的大小及初始化
#include<stdio.h>
#include<stdlib.h>
#include<string.h> union dataA{
int a;
short b;
char c;
};
union dataB{
double b;
char str[];
}; void main(){
//共用体的大小必须至少包含最大的成员数据,可以整除最小的成员数据
printf("%d\n",sizeof(union dataA));
printf("%d\n",sizeof(union dataB));//填充现象:共用体的大小一定可以被最小类型整除 system("pause");
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h> union info{
int price;
char str[];
}; void main(){
union info in1;
in1.price=;
strcpy(in1.str,"联想");//共用体起作用的是最后一个赋值的成员变量
printf("%d,%s\n",in1.price,in1.str); union info in2={};//大括号初始化时,只能初始化第一个
in2=in1;//共用体可以直接赋值
printf("%d,%s\n",in2.price,in2.str); system("pause");
}
三、指针引用
#include<stdio.h>
#include<stdlib.h>
#include<string.h> union info{
int price;
char str[];
}; void main(){
union info info={};
//strcpy(info.str,"china");
printf("%d,%s\n",info.price,info.str);
union info *p=&info;
printf("%d,%s\n",p->price,(*p).str); system("pause");
}
[c/c++] programming之路(27)、union共用体的更多相关文章
- C union共用体
共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型.您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值.共用体提供了一种使用相同的内存位置的有效方式. 共用体定义: ...
- union共用体的对齐
union DATE { char a; ]; double b; }; DATE max; cout<< sizeof(max) << endl; 这个问题很好回答,并且我把 ...
- C语言共用体(Union)
通过前面的讲解,我们知道结构体(Struct)是一种构造类型或复杂类型,它可以包含多个类型不同的成员.在C语言中,还有另外一种和结构体非常类似的语法,叫做共用体(Union),它的定义格式为: uni ...
- 转:union 联合体(共用体)
转自:http://blog.csdn.net/xiao3404/article/details/22276485 2.共用体 2.1共用体的概念 共用体是一种构造类型的数据结构.在一个“共用体”内可 ...
- 共用体union
union共用体名 { 类型名 成员名1: 类型名 成员名2: …… 类型名 成员名n; } 由于各个成员变量在内存中都使用同一段存储空间,因此共用体变量的长度等于最长的成员长度,共用体的访问方式和结 ...
- C语言共用体union
union共用体说明: 当一个共用体被声明时, 编译程序自动地产生一个变量, 其长度为联合中最大的变量长度的整数倍. 比如union中有{int x; double x1; char name[10] ...
- 瘋子C语言笔记(结构体/共用体/枚举篇)
(一)结构体类型 1.简介: 例: struct date { int month; int day; int year; }; struct student { int num; char name ...
- 【C语言入门教程】7.4 共用体
7.4 共用体 共用体又称为联合体,是由不同的数据类型组成的一个整体.与结构体不同的是,共用体每次只能使用其中一个成员.结构体的总长度是结构体所有成员长度之和,共用体的总长度是其中最长一个数据类型的长 ...
- C语言之共用体
最近在复习C语言,特再次记录: 有时需要将几种不同类型的变量存放到同一段内存单元中.如一个int.float.char放在同一个地址开始的内存单元中.,也就是使用覆盖技术,几个变量相互覆盖,称之为共用 ...
随机推荐
- css学习_css补充知识
1.渐进增强,优雅降级 2.浏览器前缀 3.背景渐变 4.css 验证工具 2种方式:第2种支持验证本地的css(推荐) 5.css压缩 ----(节约空间,节省带宽) 6.旋转轮播图 案例: ...
- .NET中的泛型集合总结
最近对集合相关的命名空间比较感兴趣,以前也就用下List<T>, Dictionary<Tkey, TValue>之类,总之,比较小白.点开N多博客,MSDN,StackOve ...
- MacBookPro磁盘空间不够
256G的SSD还是快被占满了,剩余12G,本来一切运行正常. 要往U盘里拷点资料,突然电脑就罢工了,cleanMyMac 显示磁盘容量剩余 1.8G. finder 罢工,无法重启,无法强退. 无法 ...
- EL表达式JSTL
EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据. 语法:${隐式对象名称}:获得对象的引用 序号 隐含对象名称 描 ...
- 第七周 ip通信基础回顾
H3C的配置指令包括:基本配置,查看指令,接口配置. 基本配置包括:查看可用指令:进入系统视图,全局配置模式:给设备命名:退回上一层模式:直接退回到用户模式. 查看指令包括:显示设备系统版本信息:显示 ...
- JMeter压测基础(三)——Mysql数据库
JMeter压测基础(三)——Mysql数据库 环境准备 mysql驱动 JMeter jdbc配置 JMeter jdbc请求 1.下载mysql驱动:mysql-connector-java.ja ...
- cadence16.6 暴力破解出现再次安装出现问题为Sever-----------问题
根据本人,实测,本人研究几天和在网络上借鉴,此方法是几天的成果,如有借鉴,请说明出处,谢谢,不懂的请留言. 最优解决方式,是自己卸载软件,有人会说,都完全删除了还怎么卸载软件. (1)在安装包里有个注 ...
- 搭建Sonar代码走查环境
1.下载SonarQube并解压(查看检测结果用) 2.根据自己系统下载SonarQube Runner(检测代码用,旧版名叫Sonar Scanner) 3.在自己要检测的工程目录下建立sonar- ...
- vue cli 3.0创建项目
.npm i -g @vue/cli .vue create my-project 此处有两个选择: 1.default (babel, eslint)默认套餐,提供babel和eslint支持 2. ...
- Github上36893颗星!这个被称为下一代企业级应用首选技术你学了么?
用一句话概括:这个技术,是JAVA后端框架的龙头老大,执牛耳者.这个技术就是: Spring Boot春靴. Spring Boot到底凭什么成为Java社区最具影响力的项目?说直白点,他爹Spr ...