[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放在同一个地址开始的内存单元中.,也就是使用覆盖技术,几个变量相互覆盖,称之为共用 ...
随机推荐
- vuejs 70行代码实现便签功能
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- mysql 数据库的数据类型
- oracle_创建表空间_临时表空间_修改表空间_以及自增长
管理员用户登录oracle数据库 [oracle@DBORACLE ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on ...
- vue跳转到外部链接
<span @click="see('http://xxxx">点击跳转到xxx</span> 方法:(调用函数) See (e) { window.loc ...
- 《图解HTTP》读书笔记(三:无状态协议/cookie管理状态)
HTTP是一种不保存状态,即无状态(stateless)协议.HTTP协议自身不对请求和响应之间的通信状态进行保存. ——HTTP/1.1虽然是无状态协议,但为了实现期望的保持状态功能,于是引入了Co ...
- linux下查询进程占用的内存方法总结
linux下查询进程占用的内存方法总结,假设现在有一个「php-cgi」的进程 ,进程id为「25282」.现在想要查询该进程占用的内存大小.linux命令行下有很多的工具进行查看,现总结常见的几种方 ...
- vue 点击图片放大
文档:https://www.npmjs.com/package/vue-directive-image-previewer [只能弹框查看 不能关闭和播放下一张,其他功能使用别的插件] 安装: np ...
- btcpool之BlockMaker
一.简介 BlockServer将StratumServer发送的solvedshare数据(块头和coinbase交易)与GbtMaker发送的rawgbt数据(其他交易)一起组装成一个块,然后通过 ...
- 数据仓库建模对比: 比较表格和多维解决方案 (Comparing tabular and multidimensional solutions)
笔记记下来,划重点: https://docs.microsoft.com/zh-cn/sql/analysis-services/comparing-tabular-and-multidimensi ...
- IP代理网址
http://www.kuaidaili.com/free/ http://www.66ip.cn/ http://www.xicidaili.com/nn/ http://www.ip3366.ne ...