首页 技术 正文
技术 2022年11月23日
0 收藏 943 点赞 3,373 浏览 1334 个字
//共用体  union
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>// union 共用体,构造数据类型,也叫联合体,用途:十几个不同类型的变量共占一段内存(相互覆盖)//共用体在类型定义的时候并不分配内存,定义共用体变量的时候才分配内存
union data{
char c;
int a[];
}udat1;union stu{
int a;//内部变量无法初始化,因为类型定义不会分配内存
char name[];
}fisr, *fisr1, fisr2[];//共用体定义形式①
//注意:在定义共用体变量的时候初始化也只能初始化第一个成员变量,无法对其他成员变量初始化//匿名公共体--匿名共用体无法定义变量,只能在初始化的时候定义变量
//这样就限定了共用体变量的个数,一般用于给某些特殊权限的人使用的变量
union {
char c;
int a[];
}lastp;struct tes{
int num;
char name[];
}tes1 = {,"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 = ;
//共用体变量任何时候只有一个成员存在,当存在一个成员,却给给其他成员赋值的时候,后面会覆盖前面
//因为共用体是共占一段内存,不会给每个成员变量都分配一块内存
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");
}

C语言 共用体

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,918
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,444
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,255
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,069
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,701
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,741