博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言 共用体
阅读量:5308 次
发布时间:2019-06-14

本文共 1594 字,大约阅读时间需要 5 分钟。

//共用体  union#define _CRT_SECURE_NO_WARNINGS#include
#include
#include
// union 共用体,构造数据类型,也叫联合体,用途:十几个不同类型的变量共占一段内存(相互覆盖)//共用体在类型定义的时候并不分配内存,定义共用体变量的时候才分配内存union data{ char c; int a[10];}udat1;union stu{ int a;//内部变量无法初始化,因为类型定义不会分配内存 char name[10];}fisr, *fisr1, fisr2[10];//共用体定义形式①//注意:在定义共用体变量的时候初始化也只能初始化第一个成员变量,无法对其他成员变量初始化//匿名公共体--匿名共用体无法定义变量,只能在初始化的时候定义变量//这样就限定了共用体变量的个数,一般用于给某些特殊权限的人使用的变量union { char c; int a[10];}lastp;struct tes{ int num; char name[40];}tes1 = {
4,"feiyu"},tes2;//共用体变量占据的内存单元的个数应大于或者等于是其内部最大数据成员占据内存单元数。//结构体,共用体在内存中存储,字节对齐//data是共用体,共用体大小必须至少包含最大的成员数据,所以其原始大小是sizeof(int)*10 = 40字节,//union {// char c; // int a[10];//};//因为data其原始大小正好是最宽基本类型成员int的倍数,不用填充字节//所以共用体data的大小是40//stu是共用体,stu的原始大小是sizeof(char)*10字节,根据字节对齐原则,最宽基本类型成员是int,需要填充字节//所以共用体stu的大小是12//总结:共用体大小必须至少包含最大的成员数据,并且可以整除最宽基本类型成员--详情见结构体void main(){ //验证共用体的字节对齐原则 printf("验证共用体的字节对齐原则--%d\n", sizeof(udat1)); printf("验证共用体的字节对齐原则--%d\n", sizeof(fisr)); //定义共用体 union stu stuinfo;//共用体定义形式② //共用体的赋值 stuinfo.a = 40; //共用体变量任何时候只有一个成员存在,当存在一个成员,却给给其他成员赋值的时候,后面会覆盖前面 //因为共用体是共占一段内存,不会给每个成员变量都分配一块内存 strcpy(stuinfo.name, "联想"); printf("共用体成员变量a=%d;name=%s\n", stuinfo.a, stuinfo.name); //结果发现成员变量a被覆盖了 union stu stuinfo2 = stuinfo;//共用体变量可以直接赋值 printf("共用体成员变量a=%d;name=%s\n", stuinfo2.a, stuinfo2.name); tes2 = tes1;//结构体变量可以直接赋值 printf("结构体成员变量num=%d,name=%s\n", tes2.num, tes2.name); system("pause");}

 

转载于:https://www.cnblogs.com/zhanggaofeng/p/5250641.html

你可能感兴趣的文章
【转】redo与undo
查看>>
解决升级系统导致的 curl: (48) An unknown option was passed in to libcurl
查看>>
Java Session 介绍;
查看>>
spoj TBATTLE 质因数分解+二分
查看>>
Django 模型层
查看>>
dedecms讲解-arc.listview.class.php分析,列表页展示
查看>>
Extjs6 经典版 combo下拉框数据的使用及动态传参
查看>>
【NodeJS】http-server.cmd
查看>>
研磨JavaScript系列(五):奇妙的对象
查看>>
面试题2
查看>>
selenium+java iframe定位
查看>>
P2P综述
查看>>
第五章 如何使用Burp Target
查看>>
Sprint阶段测试评分总结
查看>>
sqlite3经常使用命令&语法
查看>>
linux下编译openjdk8
查看>>
【python】--迭代器生成器装饰器
查看>>
Pow(x, n)
查看>>
安卓当中的线程和每秒刷一次
查看>>
每日一库:Modernizr.js,es5-shim.js,es5-safe.js
查看>>