[编程笔记]第九章 拓展类型

  1 拓展类型 结构体
  2 
  3 结构体
  4     1. 为什么需要结构体?
  5         为了表示一些复杂的事物,而普通的基本类型无法满足实际要求
  6     2. 什么叫结构体?
  7         把一些基本类型数据组合在一起形成的一个新的复合数据类型,叫做结构体
  8     3. 如何定义结构体?
  9         //三种方式,推荐使用第一种
 10         struct Student //第一个方式
 11         {
 12             int age ;
 13             float score ;
 14             char sex ;
 15         }
 16 
 17         //第二种方式
 18         struct Student2
 19         {
 20             int age ;
 21             float score ;
 22             char sex ;
 23 
 24         } st2 ;
 25 
 26         //第三种方式
 27         struct
 28         {
 29             int age ;
 30             float score ;
 31             char sex ;
 32         } st3 ;
 33 
 34     怎样使用结构体变量 
 35         赋值和初始化
 36             定义的同时可以整体赋值
 37             如果定义完之后,则只能单个的赋初值
 38         
 39         如果取出结构体变量中的每一个成员[成员] 【重点】
 40         1. 结构体变量名.成员名
 41         2. 指针变量名 -> 成员名 (第二种方式更常用)
 42         3. 指针变量名 -> 成员名 
 43         在计算机内部会被转化成(*指针变量名).成员名的方式来执行
 44         所以说这两种方法是等价的
 45 
 46     //例子:
 47         struct Student
 48         {
 49             int age ;
 50             float score ;
 51             char sex ;
 52         } ;
 53 
 54         int main()
 55         {
 56             struct Student st = {80,66.6,'F'} ;
 57             //初始化 定义的同时赋初值
 58             struct Student * pst = &st ;
 59             //&st 不能改成st
 60             pst —> age = 88 ; //第二种方式
 61             st.age = 10 ; //第一种方式
 62 
 63             return 0;
 64         }
 65 
 66         1. pst -> age 在计算机内部会被转化成(*pst).age 
 67         没有什么为什么,这就是->的含义,这也是一种硬性规定
 68         2. 所以pst->age 等价于 (*pst).age 也等价于st.age
 69         3. 我们之所以知道pst->age等价于st.age
 70         是因为pst->age是被转化成(*pst).age来执行
 71         4. pst->age 的含义是:
 72         pst所指向的那个结构体变量中的age这个成员
 73 
 74     结构体变量和结构体指针变量作为函数参数传递的问题
 75         推荐使用结构体指针变量作为函数参数来传递
 76     结构体变量的运算
 77         结构体变量不能相加 不能相减 也不能相互乘除
 78         但结构体变量可以相互赋值
 79 
 80     //例子:
 81         struct Student
 82         {
 83             int age ;
 84             char sex ;
 85             char name ;
 86         } ;//分号不能省
 87         struct Student st1,st2 ;
 88         st1 + st2 st1 * st2 st1/st2 都是错误的
 89         st1 = st2 或者 st2 = st1 都是正确的
 90     //举例
 91         动态构造存放学生信息的结果体数组
 92             动态构造一个数组,存放学生的信息
 93             然后按照分数排序
 94 
 95 枚举
 96     什么是枚举
 97         把一个事物所有可能的取值一一列举出来
 98     怎么样使用枚举
 99 
100     枚举的优缺点
101         代码更安全
102         书写麻烦

猜你喜欢

转载自www.cnblogs.com/lx17746071609/p/10216308.html
今日推荐