【共用体和枚举】

共用体

一种构造类型的数据结构

共用体和结构体类似,也是一种构造类型的数据结构。
既然是构造类型的,就需要先定义出类型,然后用类型定义变量。
定义共用体类型的方法和结构体非常相似,把struct 改成union 就可以了。
在进行某些算法的时候,需要使几种不同类型的变量存到同一段内存单元中,几个变量所使用空间相互重叠。这种几个不同的变量共同占用一段内存的结构,在C语言中,被称作“共用体”类型结构。
共用体所有成员占有同一段地址空间。
共用体的大小是其占内存长度最大的成员的大小。

共用体的特点

  1. 同一内存段可以用来存放几种不同类型的成员,但每一瞬时只有一种起作用。
  2. 共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员的值会被覆盖。
  3. 共用体变量的地址和它的各成员的地址都是同一地址。
  4. 共用体变量的初始化union data a={123}; 初始化共用体为第一个成员。
#include <stdio.h>

//定义一个共用体
union un{
    
    
	int a;
	int b;
	int c;
};

int main(int argc, char *argv[])
{
    
    
	//定义共用体变量
	union un myun;
	myun.a = 100;
	myun.b = 200;
	myun.c = 300;

	printf("a = %d, b = %d, c = %d\n", myun.a, myun.b, myun.c);

	return 0;
}

执行结果
在这里插入图片描述

枚举

将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。
枚举类型也是个构造类型的。

枚举类型的定义

enum 枚举类型名{
    
    
	枚举值列表;
};

在枚举值表中应列出所有可用值,也称为枚举元素。
枚举变量仅能取枚举值所列元素。

枚举变量的定义方法

enum 枚举类型名 枚举变量名;
  1. 枚举值是常量,不能在程序中用赋值语句再对它赋值。
    例如:sun=5; mon=2; sun=mon; 都是错误的。
  2. 枚举元素本身由系统定义了一个表示序号的数值。
    默认是从0开始顺序定义为0,1,2…
    如在week中,mon值为0,tue值为1, …,sun值为6。
  3. 可以改变枚举值的默认值:如
enum week //枚举类型
{
    
    
	mon=3,
	tue,
	wed,
	thu,
	fri=4,
	sat,
	sun
};

mon=3 tue=4,以此类推
fri=4 以此类推
注意:在定义枚举类型的时候枚举元素可以用等号给它赋值,用来代表元素从几开始编号
在程序中,不能再次对枚举元素赋值,因为枚举元素是常量。

#include <stdio.h>

//定义一个枚举类型
enum week
{
    
    
	mon=8, tue, wed, thu=2, fri, sat, sun
};

int main(int argc, char *argv[])
{
    
    
	//定义枚举类型的变量
enum week day = mon;
printf("day = %d\n", day);

day = fri;
printf("day = %d\n", day);

return 0;
}

执行结果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/shuting7/article/details/130718755