C语言共用体union

union共用体说明:

当一个共用体被声明时, 编译程序自动地产生一个变量, 其长度为联合中最大的变量长度的整数倍。

比如union中有{int x; double x1; char name[10];}这个共用体的长度为10字节,因为name[10]是这个共用体中最大的一个变量

#include <stdio.h>

struct A
{
	int num;
	char name[20];
	char job;
	union			//共用体关键字union
	{
		int x;
		char zy[20];
	}t1;			//共用体对象
};

int main()
{
	struct A a[2];
	int i=0;
	while (i < 2)
	{
		printf("请输入编号:");
		scanf_s("%d", &a[i].num);
		printf("请输入姓名:");
		scanf_s("%s", a[i].name, 20);
		printf("请输入职位,学生为s,老师为t :");
		getchar();
		scanf_s("%c", &a[i].job, 1);
		if (a[i].job == ‘s‘)
		{
			printf("请输入该学生的班级:");
			scanf_s("%d", &a[i].t1.x);
		}
		else
		{
			printf("请输入该老师的职位:");
			scanf_s("%s", a[i].t1.zy, 20);
		}
		i++;
	}

	printf("************************************\n");
	i = 0;
	while (i < 2)
	{
		if (a[i].job == ‘s‘)
		{
			printf("%d\t%s\t%c\t%d\n", a[i].num, a[i].name, a[i].job, a[i].t1.x);
		}
		else
		{
			printf("%d\t%s\t%c\t%s\n", a[i].num, a[i].name, a[i].job, a[i].t1.zy);
		}
		i++;
	}

	system("pause");
	return 0;
}

  

时间: 2024-08-11 05:42:59

C语言共用体union的相关文章

(C语言)共用体union的使用方法举例

曾经在学校学习C语言的时候一直搞不懂那个共用体union有什么用的.工作之后才发现它的一些妙用,现举比例如以下: 1. 为了方便看懂代码. 比方说想写一个3 * 3的矩阵,能够这样写: [ 注:以下用红色部分标记的地方是后来加入上去的,谢谢yrqing718的提醒!] struct  Matrix { union { struct { float  _f11, _f12, _f13, _f21, _f22, _f23, _f31, _f32, _f33; }; float  f[3][3]; }

共用体union详解

一共用体的概念 当需要把不同类型的变量存放到同一段内存单元或对同一段内存单元的数据按不同类型处理则 需要使用共用体数据结构 例把一个整型变量一个字符型变量一个实型变量放在同一个地址开始的内存单元中 共用体的定义形式 union 共用体名 成员列表 变量列表 注意区分 共用体各成员占相同的起始地址所占内存长度等于最长的成员所占内存 结构体各成员占不同的地址所占内存长度等于全部成员所占内存之和 二共用体变量的引用 只能引用共用体变量的成员如 union data a; a.i; a.ch; a.f;

C语言 共用体

//共用体 union #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> // union 共用体,构造数据类型,也叫联合体,用途:十几个不同类型的变量共占一段内存(相互覆盖) //共用体在类型定义的时候并不分配内存,定义共用体变量的时候才分配内存 union data{ char c; int a[10]; }udat1; union stu{

共用体union

目录 ????- 概述 ????????- 基本语法 ????????- 匿名共用体 ????- 改进 ?? 概述 结构体struct可以同时存储int.long.double等不同类型, 而共用体union只能存储int.long.double等不同类型中的一个. 共用体union比struct节省内存,常用于配置低的硬件,如控制烤箱.MP3播放器或火星漫步者等嵌入式編程. 基本语法 union one4all { ????int int_val; ????long long_val; ???

共用体(union)

在C语言中,当不同数据类型的数据共同占有使用一块内存空间时,这个数据构造类型叫做共用体,也叫联合体.共用体用的地方比较少,使用形式与结构体类似,但是内存使用方式不同. 1--- 定义 union 共用体类型名 { 成员表列: }变量名1:union 共用体类型名 变量名2: 2--- 成员共用同一个存储区域,共用体类型变量是以最后一次

C结构体struct 和 共用体union的使用测试

#include <stdio.h> struct { char name[10]; char sex; char job; int num; union{ //联合只能共用同一个内存 int class; char position[10]; }category; }PE[2]; int main(){ int i; for(i=0;i<2;i++){ printf("请输入:号码 姓名 性别 职业\n"); scanf("%d %s %c %c"

C语言共用体的作用

一.介绍 1.共用体(Union),它的定义格式为: union 共用体名{     成员列表 }; 共用体有时也被称为联合或者联合体,这也是 Union 这个单词的本意. 2.结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响:而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员. 结构体占用的内存大于等于所有成员占用的内存的总和(成员之间可能会存在缝隙),共用体占用的内存等于最长的成员占用的内存.共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,如

C语言共用体存储分析

float类型的数据在内存中是如上存储的,float类型的存储方式如下(摘自博客 http://blog.csdn.net/yezhubenyue/article/details/7436624): 取原文中的部分总结如下: 浮点型变量在计算机内存中占用4字节(Byte),即32-bit.遵循IEEE-754格式标准. 一个浮点数由2部分组成:底数M和指数E. 底数部分 使用2进制数来表示此浮点数的实际值. 指数部分 占用8-bit的二进制数,可表示数值范围为0-255.但是指数应可正可负,所以

[C/C++基础] 3.结构体、共用体、枚举

概述: 结构体和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,其次相同结构的结构体变脸是可以相互赋值的. 共用体(联合体)和结构体都是由多个不同的数据类型成员组成,但在任何同一时刻,共用体值存放了一个被选中的成员.而结构体的所有成员都存在. C++的枚举(enum)工具提供了另外一种可以替代const来创建符号常量的方式,枚举表是枚举常量的集合. 3.1 结构体struct 结构体类型变量的定义一般形式为: struct 结构体类型名{ 类型1 成员名1; 类型2 成员名2;