【CPP】大一C++课本知识记录 第八篇 结构体、共用体和枚举类型

结构体

结构体类型的定义

结构体也是一种数据类型,比如下面代码里的 student 就是 struct 结构体型变量:

struct student//srtuct是结构体的关键字,student是定义的结构体名; 
{
	int num;
	char name[20];
	char sex;
	int age;
	float score;//对各个成员一一进行类型声明; 
};//不要忽略最后的分号; 

注意点:

  • 类型和变量是不同的概念,定义变量后系统会分配内存空间,而定义类型就不会;
  • 结构体的成员也可以是结构体类型,即结构体可以嵌套可以嵌套引用

结构体类型变量的定义

先定义结构体类型再定义变量

       对上面已定义的一个结构体 struct student ,可以用它来定义变量:

//只定义结构体变量:
struct student stud1,stud2;
student stud3,stud4; 
//既定义变量又初始化:
struct student stud1={202210,"张明",'M',18,100};

       上面定义的变量 stud1 等都具有struct student 类型的结构,都含有其相应的各个成员;

在定义结构体类型的同时定义变量

struct student stud1,stud2;
student stud3,stud4; 
struct student
{
	int num;
	char name[20];
	char sex;
	int age;
	float score;
}stud1,stud2;

       这样在结构体成员声明的后面紧跟变量,定义了两个struct student 类型的变量stud1和stud2,作为程序的全局变量,可以被程序的其他文件所使用;

直接定义结构体类型变量

struct//这种定义方式不出现结构体的类型名;
{
	int num;
	char name[20];
	char sex;
	int age;
	float score;
}stud1,stud2;

结构体类型变量及其成员的引用

       用小数点连接结构体变量名和其一成员名来作为一个可操作的变量,可以对其进行赋值,运算等等操作:

stud1.num=202210;
stud1.name[0]="张明";
stud1.sex='M';
stud1.score=100;

       同类型的结构体变量之间可以直接用赋值号相互赋值,其效果等同于各个成员的依次赋值;

       但要注意,不能将结构体变量作为一个整体进行输入输出,只能将其成员分别进行输入输出;

结构体数组

       一个结构体变量可以存储一组数据,而一个结构体数组则可以存储多组数据,其初始化方法和普通数组一样,只是其中成员的数据类型可以不同;

共用体

共用体类型及其变量的定义

       定义的方式和结构体一模一样,只是将关键字换成共用体 union

       但二者含义大不相同,结构体变量每个成员分别占有自己的内存单元,而共用体变量所占的内存长度是所有成员中最长成员所占的长度

共用体类型变量的引用

       和结构体相同,引用依然是使用小数点,依然不能整体输入输出;

共用体数据类型的特点

       同一内存段可以用来存放类型不同的成员,但一次只能存一个,存完一个若再存一个,原来的就被踢走了;

       共用体变量的起始地址和其各成员的起始地址都是同一地址;

       若在定义公用体变量的时候对它初始化赋值,那么只允许有一个数赋值给第一个成员

       可以定义共用体数组;

       共用体的存在,一是为了节省空间,二是为了一些特殊的应用;

枚举类型

枚举类型的定义

       枚举类型的关键字是 enum ,其定义的格式如下:

//enum 枚举类型名 {枚举常量列表}; 
enum day {Sun,Mon,Tue,Wed,Thu,Fri,Sat};

       其中每个枚举常量是一个用标识符表示的整型常量

       默认第一个整型常量的值为1,第二个的值为2,以此类推;

       可以在定义的时候对枚举常量显式赋值,比如 Sum=1 ,则接下来的常量就从2开始往后依次递增;

枚举类型变量的定义

枚举变量的定义格式如下:

//enum 枚举类型名 枚举变量名列表;
enum day day1,day2,day3,day4,day5;
week week1,week2,week3,week4,week5;
//枚举类型的定义可以和枚举变量的定义一起写:
enum day {a,b,c,d} day1,day2,day3,day4;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值