1. 什么是结构体?(使自定义数据类型)
• 1.不同类型的变量是用来保存不同类型的数据的.
• 定义:
o 用来存储不同变量类型或相同数据类型的变量组成.
o
• 作用:
o 使用结构体创建新的数据类型,并指定新数据类型的变量是由哪些小变量联合而成的.
• 与数组的区别:
o 数组是用来存储相同数据类型,并具有相同意义的数据类型的元素的容器.
o
2. 如何使用结构体创建新的数据类型/
• 语法格式:
o struct 新类型名称(结构体名) {
o 数据类型1 小变量名称1;
o 数据类型2 小变量名称2;
o 数据类型3 小变量名称3;
o };
• 这个代表了我们创建了一个数据类型,这个数据类型名称叫做:struct Student
3. 声明结构体类型的变量
• 语法格式:
o struct 类型名称 变量名;
o
4. 初始化结构体变量(与数组的赋值一样)
• 意义: 为结构体变量中的小变量赋值.
• 初始化:
o 全部初始化:
♣ 先声明变量,再逐一赋值.
⎥ 语法:
• 结构体变量名.成员 = 数据
• stu.name = “jack”;
♣ 声明的同时初始化
⎥ 语法:
•
o 部分初始化
♣ 初始化第一个元素
♣ 指定成员的变量,初始化
5. 结构体变量成员的默认值(与数组的很是类似)
• 声明结构体变量,如果没有初始化,成员的值为垃圾值
• 只要在声明结构体变量的同时,只要初始化1个成员,其他的成员就会被自动的初始化为0.
6. 为什么要使用结构体
• 方便数据的管理
5. 什么时候需要定义一个结构体
• 当我们要保存1个数据.但是发现这个数据是个大数据时,这个数据是由其他的小数据联合起来组成的,那么这个时候,就得使用结构体自定义这个数据类型.在根据这个数据类型来保存数据.
6. 使用结构体的注意事项(本质数据类型,与基本数据类型很像)
• 一定要先是使用结构体定义类型,然后才能使用它声明变量
• 可以批量声明
• 结构体名称的命名规范,要求结构体类型的变量的每一单词的首字母大写.
• 声明的结构体类型的同时,声明结构体类型的变量.
7. 匿名结构体
• 没有结构体类型名.
o 注意:
♣ 只能在声明结构体的同时就创建变量,也可以批量声明
♣ 不能单独的声明这个结构体类型的变量
8. 结构体类型的作用域的问题(与基本数据类型差不多)
• 如果结构体类型是定义在函数的内部,那么这个结构体类型只能在这个函数的内部使用.
• 如果我们需要所有的函数都使用,那么就把它定义在函数外面.(建议)
9. 结构体变量之间的赋值问题
• 相同结构体类型的变量之间绝对是可以相互赋值的
• 结构体变量之间的赋值是值传递
o
10. 结构体数组
• 本质:一位数组,只不过元素数据类型为结构体类型.(详情请见,一维数组)
11. 结构体长度的计算
• 1.先使用sizeof 计算出数组占用的总字节数.
• 2.使用总的字节数除以每一个元素占用的字节数.
• 3.int len = sizeof(students) / sizeof(struct Student);
12. 结构体指针
• 1. 结构体指针的本质是?
o 本质:指针变量,指向结构体类型的指针变量.
• 2. 格式:
o struct 结构体类型的名称* 指针名;
• 3. 如何通过结构体指针操作数据间接的操作数据.
o A. (*结构体指针名).成员
o B. 使用箭头->来访问.
•
13. 结构体嵌套
• 结构体中的某个数据的数据的类型为结构体类型,就叫嵌套
14. 结构体作为函数的参数(与基本数据类型相同)
• 结构体是我们自定义的数据类型,也是一种数据类型,所以可以作为函数的参数
• 结构体作为参数传值是值传递.
• 如果你就是希望函数的内部可以修改实参结构体变量的值,那么久要用指针.
15. 结构体作为函数的返回值
• 结构体类型完全可以作为函数的返回值.
• 在返回的时候直接剪这个结构体变量的值返回即可
• 如果你要返回结构体变量的地址,那么就要吧这个结构体变量创建在堆区.
16. 枚举的使用.
• 什么是枚举?
o 某些变量的取值是限定的,变量的取值只能是指定的几个值当中的任意一个,除此之外其他的不行.
o 新的需求: 变量的取值只能是指定的几个值当中的任意1个.除此之外其他不行.
o 作用 : 支持程序员创建一种新数据类型,这个数据类型的变量的值被限定.
17. 如何使用枚举创建1个新的数据类型来达到限定变量的值.
• 格式:
o enum 新类型名称 {
♣ 限定取值1 = 10,
♣ 限定取值2 = 20,
♣ 限定取值3 = 30,
o };
o
18. 声明枚举变量
• enum 枚举类型名称 变量名;
• 这个变量的特点: 只能够存储这个枚举类型限定的取值之一.
•
19. 枚举变量的初始化
• 只能为这个枚举变量赋 枚举类型 限定的 取值之一.
• 例如:
o enum 新类型的名称 变量名 = 限定值1;
20. 什么时候自己要定义枚举
• 如果你有一个变量的取值,只能取指定的几个中的一个.别的不能取,那么这个时候就可以使用枚举了.
•
19. 枚举的使用注意事项
• 作用域: (全局变量和局部变量差不多理解)
o 如果将枚举类型定义在函数内部,那么这个类型就只能在这个函数的内部使用
o 如果你希望将这个枚举的类型给所有的函数使用,那么就将这个枚举类型定义在函数的外面
•
• 每一个枚举值都有对应的整型数据.
o 默认从0开始;依次递增,我们也可以指定整型数据.
o 无论什么类型的枚举变量,都占据四个字节,所以我们可以存整数,但是,可读性会变差.
o
• 枚举的使用规范:
o 每个单词的首字母大写.
o 枚举值的命名规范:
♣ 以枚举的类型开头,每个单词的首字母大写.
♣
20. typedef --类型定义
• 作用: 为已经存在的数据类型类型起别名.
•
• 格式: typedef 已经存在的数据类型 别名;
•
• 基本数据类型的别名:
o typedef int itheima;
•
21 .什么时候为已经存在的数据类型起别名
• 当数据类型很长的时候,就可以为这个数据类型取1个短1点的别名,方便使用.(简化书写)
•
22 . 使用typedef为结构体起别名
• 1. 先声明结构体类型,后起别名
• 2. 声明结构体类型的同时,就使用typedef来为结构体起别名.
• 3. 声明匿名结构体的同时, 就使用typedef来为结构体起别名.(最常用的方式)
•
23. 使用typedef为枚举类型起别名
• 1. 先声明枚举类型,后起别名.
• 2. 声明枚举类型的同时,就使用typedef来为结构体起别名.
• 3. 声明匿名枚举的同时, 就使用typedef来为结构体起别名.(最常用的方式)
24. 结构体与数组的区别
• 1.存储的数据
o 数组: 同类型的数据,并且具有相同的意义.
o 结构体:不同类型的数据与相同类型的数据.
• 2. 作为函数的参数
o 数组: 地址传递
o 结构体: 值传递
|
|