结构体

  1. 结构体

    利用结构体造出一个新的数据类型,这个新的数据类型是由基本数据类型所组合成的

    1. 为什么需要结构体

    为了表示一些复杂的事物,而普通的基本类型无法满足实际的要求

  2. 什么叫结构体

    把一些基本类型数据组合在一起,形成一个新的复合数据类型,这个叫做结构体

  3. 如何定义结构体

/*
 2020年6月19日22:37:25
 目的:如何定义一个结构体
*/

# include <stdio.h>
// 第一种方式
struct Student
{
int age;
float score;
char sex;
};
// 第二种方式
struct Student2
{
int age;
float score;
char sex;
} st2;// st2 为变量名

// 第三种方式
struct
{
int age;
float score;
char sex;
} st3;// st3 为变量名
/*
 只推荐使用第一种方式定义结构体
*/
  1. 怎样使用结构体变量

    赋值和初始化

    定义的同时可以整体赋初值

    如果定义完之后,则只能单个赋值

    # include <stdio.h>
    // 第一种方式 这只是定义了一个新的数据类型,并没有定义变量
    struct Student
    {
    int age;
    float score;
    char sex;
    };

    int main(void)
    {
    struct Student st = {20, 66.2, 'F'}; // 初始化 定义的同时赋初值
    struct Student st2;

    st2.age = 10;
    st2.score = 66.3;
    st2.sex = 'F';

    printf("%d %f %c ",st.age, st.score, st.sex);
    printf("%d %f %c ",st2.age, st2score, st2.sex);

    return 0;

    }

    如何取出结构体变量中的每一个成员

    1. 结构体 . 成员名

    2. 指针变量名 ->成员名 (第二种更常用)

      在计算机内部会被转化成(*指针变量名).成员名 的方式来执行

      # include <stdio.h>
      // 第一种方式
      struct Student
      {
      int age;
      float score;
      char sex;
      };

      int main(void)
      {
      struct Student st = {20, 66.2, 'F'}; // 初始化 定义的同时赋初值
         /* 第一种方式
      st2.age = 10;
      st2.score = 66.3;
      st2.sex = 'F';*/

      struct Student * pst = &st; // &st不能改成st

      pst->age = 88; // 第二种方式
      }
      /*pst->age 在计算机内部会被转换成(*pst).age,没有为什么,这就是->的含义,也一种硬性规定
      所以 pst->age 等价于(*pst).age 也等价于 st.age
      pst->age的含义:
      pst所指向的那个结构体变量中的age这个成员

    结构体变量的运算

    不能相加,相减,相互乘除,但是可以相互赋值

    结构体变量和结构体变量指针作为函数参数传递的问题

    推荐使用结构体指针变量作为函数的参数来传递

    动态构造存放学生信息的结构体(举例)

    动态构造一个数组。存放学生的信息,然后按分数排序输出

    链表

原文地址:https://www.cnblogs.com/icoding233/p/13174141.html