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

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

#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. linux挂载系统ios文件与gcc安装

    挂载方法: 1.将iso文件拷贝到某一目录下,(/test) 2.建立挂载点文件夹:mkdir  /mnt/iso1 3.进入 mount –o loop  /test/**.iso  /mnt/is ...

  2. JVM内存模型与垃圾回收

    内存模型 1,程序计数器(Program Counter Register):程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,可以理解为是当前线程的行号指示器.字节码解 ...

  3. NetBeans配置subli

    NetBeans主题设置: ①.去https://netbeansthemes.com/rank/网址下载喜欢的主题 ②.然后打开NetBeans-->工具->选项->外观-> ...

  4. 栈->栈的基本定义

    定义: 栈是限定仅在表尾进行插入或删除操作的线性表.因此,对栈来说,表尾端有特殊含义,称为栈顶,相应地,表头端称为栈底.不含元素的空表成为空栈. 示意图: 顺序栈的表示和实现 可以在初始化时分配一块连 ...

  5. 百度地图API实时画出动态运行轨迹(一条行驶轨迹),车头实时指向行驶方向,设置角度偏移

    参考网址:https://blog.csdn.net/skywqnan/article/details/79036262 改变车的方向:http://www.cnblogs.com/peixuanzh ...

  6. Windows下配置node和npm

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效. Node.js 的使用包管理器 ...

  7. Push rejected: Push to origin/master was rejected

    1.错误日志 : Maven projects need to be imported: Import Changes Enable Auto-Import : files committed: 初始 ...

  8. OC 应用跳转QQ私聊界面或者申请加群

    申请加群 NSString *qq_number = QQ; NSString* urlStr = [NSString stringWithFormat:@"mqqapi://card/sh ...

  9. [vue]vue基础复习项案例stepbystep

    看本篇第二次复习内容即可. 还有一些 文档了这个如 https://www.cnblogs.com/iiiiiher/p/9508733.html https://www.cnblogs.com/ii ...

  10. win 下 python ImportError: No module named requests

    第一次弄爬虫,报库找不到,网上找了半天,一般都让都让改成绝对路径...那不是饮鸩止渴嘛. 然后 在无意中发现,不需要控制台输入pip命令,因为不是在Linux下啊,,win下直接在pycharm里添加 ...