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

   拓展类型 结构体
   
   结构体
       1. 为什么需要结构体?
           为了表示一些复杂的事物,而普通的基本类型无法满足实际要求
       2. 什么叫结构体?
           把一些基本类型数据组合在一起形成的一个新的复合数据类型,叫做结构体
       3. 如何定义结构体?
           //三种方式,推荐使用第一种
          struct Student //第一个方式
          {
              int age ;
              float score ;
              char sex ;
          }
  
          //第二种方式
          struct Student2
          {
              int age ;
              float score ;
              char sex ;
  
          } st2 ;
  
          //第三种方式
          struct
          {
              int age ;
              float score ;
              char sex ;
          } st3 ;
  
      怎样使用结构体变量 
          赋值和初始化
              定义的同时可以整体赋值
              如果定义完之后,则只能单个的赋初值
          
          如果取出结构体变量中的每一个成员[成员] 【重点】
          1. 结构体变量名.成员名
          2. 指针变量名 -> 成员名 (第二种方式更常用)
          3. 指针变量名 -> 成员名 
          在计算机内部会被转化成(*指针变量名).成员名的方式来执行
          所以说这两种方法是等价的
  
      //例子:
          struct Student
          {
              int age ;
              float score ;
              char sex ;
          } ;
  
          int main()
          {
              struct Student st = {80,66.6,'F'} ;
              //初始化 定义的同时赋初值
              struct Student * pst = &st ;
              //&st 不能改成st
              pst —> age = 88 ; //第二种方式
              st.age = 10 ; //第一种方式
  
              return 0;
          }
  
          1. pst -> age 在计算机内部会被转化成(*pst).age 
          没有什么为什么,这就是->的含义,这也是一种硬性规定
          2. 所以pst->age 等价于 (*pst).age 也等价于st.age
          3. 我们之所以知道pst->age等价于st.age
          是因为pst->age是被转化成(*pst).age来执行
          4. pst->age 的含义是:
          pst所指向的那个结构体变量中的age这个成员
  
      结构体变量和结构体指针变量作为函数参数传递的问题
          推荐使用结构体指针变量作为函数参数来传递
     结构体变量的运算
          结构体变量不能相加 不能相减 也不能相互乘除
          但结构体变量可以相互赋值
  
      //例子:
          struct Student
          {
              int age ;
              char sex ;
              char name ;
          } ;//分号不能省
          struct Student st1,st2 ;
          st1 + st2 st1 * st2 st1/st2 都是错误的
          st1 = st2 或者 st2 = st1 都是正确的
      //举例
          动态构造存放学生信息的结果体数组
              动态构造一个数组,存放学生的信息
              然后按照分数排序
  
  枚举
      什么是枚举
          把一个事物所有可能的取值一一列举出来
      怎么样使用枚举
  
     枚举的优缺点
         代码更安全
         书写麻烦
 
posted @ 2019-01-03 19:09  Xu_Lin  阅读(185)  评论(0编辑  收藏  举报