C语言下结构体、共用体、枚举类型的讲解

发布于:2024-07-08 ⋅ 阅读:(51) ⋅ 点赞:(0)

主要内容

  1. 结构体
  2. 结构体数组
  3. 结构体指针
  4. 包含结构体的结构
  5. 链表
  6. 链表相关操作
  7. 共用体
  8. 枚举类型

结构体

结构体的类型的概念

                 

结构体实现步骤

结构体变量的声明

struct

struct  结构体名{                                               

     数据类型  成员名1;

     数据类型  成员名2;

     ......

     数据类型  成员名n;

};

struct  stu{

     int  num;

     char  name[20];

     char  sex;

     float  score;

};

结构体变量的定义

1.先定义结构体再定义结构体变量

struct  student  student1,student2;

2.定义类型同时定义变量

struct  结构体名{

     数据类型  成员名1;

     数据类型  成员名2;

     ......

     数据类型  成员名n;

}变量1,...,变量n;

struct Product

{

       char cName[10];    /*产品名称*/

       char cShape[20];    /*形状*/

       char cColor[10];    /*颜色*/

       int iPrice;    /*价格*/

       char cArea[20];    /*产地*/

}product1,product2;    /*定义结构体变量*/

3.直接定义变量

struct {

     数据类型  成员名1;

     数据类型  成员名2;

     ......

     数据类型  成员名n;

}变量1,...,变量n;

struct

{

       char cName[10];    /*产品名称*/

       char cShape[20];    /*形状*/

       char cColor[10];    /*颜色*/

       int iPrice;    /*价格*/

       char cArea[20];    /*产地*/

}product1,product2;    /*定义结构体变量*/

结构体注意事项

结构体变量的引用

结构体类型的初始化

struct Student

{

         char cName[20];

         char cSex;

         int iGrade;

} student1 = {"HanXue","W",3};  /*定义变量并设置初始值*/

结构体数组

结构体数组与数组的区别

相同点:

       结构体数组和数组的定义与引用规则是相同的

不同点:

     结构体数组中的所有元素为结构体变量

     普通数组中的所有元素为基本类型变量

定义结构体数组

struct  结构体名{

     成员列表

}数组名[数组长度];

struct Student  /*学生结构*/

{

       char cName[20];  /*姓名*/

       int iNumber;  /*学号*/

       char cSex;  /*性别*/

       int iGrade;  /*年级*/

} student[5];  /*定义结构体数组*/

struct Student student[5];   /*定义结构体数组*/

struct    /*学生结构*/

{

       char cName[20];  /*姓名*/

       int iNumber;  /*学号*/

       char cSex;  /*性别*/

       int iGrade;  /*年级*/

} student[5];  /*定义结构体数组*/

初始化结构体数组

struct 结构体名{

         成员列表;

}数组名={初始值列表};

struct Student  /*学生结构*/

{

        char cName[20];  /*姓名*/

        int iNumber;  /*学号*/

        char cSex;  /*性别*/

        int iGrade;  /*年级*/

} student[5]={{"WangJiasheng",12062212,'M',3},

   {"YuLongjiao",12062213,'W',3},

   {"JiangXuehuan",12062214,'W',3},

   {"ZhangMeng",12062215,'W',3},

   {"HanLiang",12062216,'M',3}};  /*定义数组并设置初始值*/

结构体指针

指向结构体变量的指针

指向结构体数组的指针

    结构体指针变量不但可以指向一个结构体变量,还可以指向结构体数组,此时指针变量的值就是结构体数组的首地址

    结构体指针变量也可以直接指向结构体数组中的元素,这时指针变量的值就是该结构体数组元素的首地址

结构体作为函数参数

1.使用结构体变量作为函数参数

        void Display(struct Student stu);

2.使用指向结构体变量的指针作为函数的参数

       void Display(struct Student* stu)

3.使用结构体变量的成员作为函数的参数

        Display(student.fScore[0]);

包含结构的结构

struct student  /*学生信息结构*/

{

       char name[30];  /*姓名*/

       int num;  /*学号*/

       char sex[20];  /*性别*/

       struct date birthday;  /*出生日期*/

}student={"苏玉群",12061212,"",{1986,12,6}};  /*为结构变量初始化*/

链表

链表概述

动态内存分配函数

创建动态链表

         所谓建立动态链表就是指在程序运行过程中从无到有地建立起一个链表,即一个一个地分配节点的内存空间,然后输入节点中的数据并建立节点间的相连关系。

链表的相关操作

链表的插入操作

链表的删除操作

共用体

共用体的概念

共用体变量的引用

共用体变量的初始化

        union DataUnion Union={97};

共用体类型的数据特点

枚举类型

枚举类型的概念

枚举类型的定义

      enum  枚举标识符{常量列表}

      enum Colors(Red=1,Green,Blue);

malloc函数

使用指向结构体变量的指结构体ts


网站公告

今日签到

点亮在社区的每一天
去签到