------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、什么是结构体
当一个整体由多个数据构成时,我们可以用数组来表示这个整体,但是数组有个特点:内部的每一个元素都必须是相同类型的数据。
在实际应用中,我们通常需要由不同类型的数据来构成一个整体,比如学生这个整体可以由姓名、年龄、身高等数据构成,这些数
据都具有不同的类型,姓名可以是字符串类型,年龄可以是整型,身高可以是浮点型。
为此,C语言专门提供了一种构造类型来解决上述问题,这就是结构体,它允许内部的元素是不同类型的。
二、
1.定义形式
结构体内部的元素,也就是组成成分,我们一般称为"成员"。
结构体的一般定义形式为:
struct 结构体名{
类型名1 成员名1;
类型名2 成员名2;
};
比如,我们定义一个学生类
三、结构体变量的定义
前面只是定义了名字为Student的结构体类型,并非定义了一个结构体变量,就像int一样,只是一种类型。
定义结构体的方式一般有三种
1.先定义结构体类型,再定义变量
2.定义结构体类型的同时定义变量
3.直接定义结构体类型变量,省略类型名
四、结构体的注意点
1.结构体不可以包含自己
2.结构体内可以包含别的结构体
3.只有当定义属于结构体类型的变量时,系统才会分配存储空间给该变量
结构体的初始化
将各成员的初值,按顺序地放在一对大括号{}中,并用逗号分隔,一一对应赋值。
比如初始化Student结构体变量stu
结构体只能在定义变量的时候赋初值
枚举
枚举是C语言中的一种基本数据类型,并不是构造类型,它可以用于声明一组常数。
当一个变量有几个固定的可能取值时,可以将这个变量定义为枚举类型。比如,你可以用一个枚举类型的变量来表示季节,因为季节只有4种可能的取值:春天、夏天、秋天、冬天。
1.枚举的定义
1)枚举类型的定义
一般形式为:enum 枚举名 {枚举元素1,枚举元素2,……};
2)枚举变量的定义
跟结构体一样,有3种方式定义枚举变量
1>先定义枚举类型,再定义枚举变量
2>定义枚举类型同时,定义枚举变量
3>省略枚举类型名,直接定义枚举变量
2.枚举的使用
1)C语言编译器会将枚举元素(spring、summer等)作为整型常量处理,称为枚举常量。
2)枚举元素的值取决于定义时各枚举元素排列的先后顺序。默认情况下,第一个枚举元素的值为0,第二个为1,依次顺序加1。
3)也可以在定义枚举类型时改变枚举类型的值
3.枚举变量的基本操作
赋值
可以给枚举变量赋枚举常量或者整型值
遍历枚举元素
typedef
1.typedef作用简介
1)我们可以使用typedef关键字为各种数据类型定义一个新名字
2)我们还可以在别名的基础上再起别名
typedef与指针
除开可以给基本数据类型起别名,typedef也可以给指针起别名
typedef与结构体
给结构体起别名可以使代码更加简洁明
typedef与枚举类型
typedef与指向函数的指针
1)先看一下指向函数的指针如何定义
总结:
1.需要先定义结构体类型,再定义结构体变量。定义结构体类型时,系统是不分配内存空间的。系统只分配内存空间给实际的结构体变量。
2.结构体变量所占内存大小:补齐算法——最大元素的倍数。
3.枚举元素值从0开始,后续元素依次+1。
4.typedef的使用