共用体时刻只有一个变量,结构体变量同时并存

一、创建共用体的三种形式

#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共用体的更多相关文章

  1. C union共用体

    共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型.您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值.共用体提供了一种使用相同的内存位置的有效方式. 共用体定义: ...

  2. union共用体的对齐

    union DATE { char a; ]; double b; }; DATE max; cout<< sizeof(max) << endl; 这个问题很好回答,并且我把 ...

  3. C语言共用体(Union)

    通过前面的讲解,我们知道结构体(Struct)是一种构造类型或复杂类型,它可以包含多个类型不同的成员.在C语言中,还有另外一种和结构体非常类似的语法,叫做共用体(Union),它的定义格式为: uni ...

  4. 转:union 联合体(共用体)

    转自:http://blog.csdn.net/xiao3404/article/details/22276485 2.共用体 2.1共用体的概念 共用体是一种构造类型的数据结构.在一个“共用体”内可 ...

  5. 共用体union

    union共用体名 { 类型名 成员名1: 类型名 成员名2: …… 类型名 成员名n; } 由于各个成员变量在内存中都使用同一段存储空间,因此共用体变量的长度等于最长的成员长度,共用体的访问方式和结 ...

  6. C语言共用体union

    union共用体说明: 当一个共用体被声明时, 编译程序自动地产生一个变量, 其长度为联合中最大的变量长度的整数倍. 比如union中有{int x; double x1; char name[10] ...

  7. 瘋子C语言笔记(结构体/共用体/枚举篇)

    (一)结构体类型 1.简介: 例: struct date { int month; int day; int year; }; struct student { int num; char name ...

  8. 【C语言入门教程】7.4 共用体

    7.4 共用体 共用体又称为联合体,是由不同的数据类型组成的一个整体.与结构体不同的是,共用体每次只能使用其中一个成员.结构体的总长度是结构体所有成员长度之和,共用体的总长度是其中最长一个数据类型的长 ...

  9. C语言之共用体

    最近在复习C语言,特再次记录: 有时需要将几种不同类型的变量存放到同一段内存单元中.如一个int.float.char放在同一个地址开始的内存单元中.,也就是使用覆盖技术,几个变量相互覆盖,称之为共用 ...

随机推荐

  1. Codeforces 1154E - Two Teams - [线段树+链表]

    题目链接:https://codeforces.com/contest/1154/problem/E 题意: $n$ 个人排成一排,第 $i$ 个人的能力值为 $a[i]$,$a[1 \sim n]$ ...

  2. iOS8之后搜索框的常规实例

    1.在一个二级导航控制器中添加一个UITableviewController作为子控制器 2.UITableviewController.tableView 作为展示结果 3.利用iOS之后的UISe ...

  3. MarkDown语言

    参考: 参考:https://typora.io/ 参考:https://caret.io/ Markdown是一种轻量级标记语言,创始人为約翰·格魯伯(英语:John Gruber). 它允许人们“ ...

  4. 天梯赛练习题L2-006. 树的遍历

    题目链接 已知一棵树的后序遍历顺序和中序遍历顺序,求层次遍历的顺序: 树的四种遍历: 先序遍历:先访问根节点,再访问左子树,最后访问右子树 中序遍历:先访问左子树,再访问根节点,最后访问右子树 后序遍 ...

  5. python yield,yield from,深浅拷贝

    (一)yield和yield from 转自:理解yield   yield from (1)yield 1.通常的for…in…循环中,in后面是一个数组,这个数组就是一个可迭代对象,类似的还有链表 ...

  6. CF653F Paper task

    题目链接:洛谷 首先我们不考虑本质不同这个限制. 既然不能直接用栈乱搞,我们就可以用一个前缀和的套路了. 我们将(设为1,将)设为-1,记前缀和为$s_i$,则$[i,j]$这一段是回文子串当且仅当 ...

  7. Zookeeper节点增删改查与集群搭建(笔记)

    1.上传文件目录说明 上传的文件一般放在 /home/下 安装文件一般在 /usr/local/下 2. 安装zookeeper 2.1将zookeeper-3.4.11.tar.gz拷贝到/home ...

  8. urlib库的使用

    urlib库实际上不是很常用,因为其api调用复杂,已被requests模块取代. 1.request发送请求 from urllib import request #默认指定的是get请求 #url ...

  9. 贝塞尔曲线java实现

    主类:BezierFrame package bezierT; import java.awt.Color; import java.awt.Dimension; import java.awt.Ev ...

  10. jQuery动画方法

    下面介绍一些使用jQuery实现动画的方法: html中有如下代码: <button id="btn-box1">show</button> <but ...