首页 > 其他分享 >C语言下结构体、共用体、枚举类型的讲解

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

时间:2024-07-07 17:55:27浏览次数:18  
标签:struct int C语言 char 枚举 数组 共用 变量 结构

主要内容

  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

标签:struct,int,C语言,char,枚举,数组,共用,变量,结构
From: https://blog.csdn.net/m0_64148419/article/details/140242915

相关文章

  • C语言下的文件详解
    主要内容文件概述文件指针文件的打开与关闭文件的读写文件    把输入和输出的数据以文件的形式保存在计算机的外存储器上,可以确保数据能随时使用,避免反复输入和读取数据 文件概述文件是指一组相关数据的有序集合文件是存储数据的基本单位,可以通过读取文件访问数......
  • C语言大师之路:从零到王者/新手入门(3)选择语句
    序(一些闲话)我希望我的语言不要像专业书那样让人眼花缭乱,所以当我解释语法时,我会尽量避免使用太多专业术语,让说明更容易理解。我会用通俗易懂的语言来解释,而不是像专业书籍那样让人感到困惑。本人计划通过文章分享C语言的核心知识点和学习心得。鉴于仍处于学习阶段,文章中可......
  • C语言大师之路:从零到王者/新手入门(2)变量与运算符
    序(一些闲话)我希望我的语言不要像专业书那样让人眼花缭乱,所以当我解释语法时,我会尽量避免使用太多专业术语,让说明更容易理解。我会用通俗易懂的语言来解释,而不是像专业书籍那样让人感到困惑。本人计划通过文章分享C语言的核心知识点和学习心得。鉴于仍处于学习阶段,文章中可......
  • 【C语言】常用库介绍
    在上一篇博文中,我们讲了C语言的知识点,感兴趣的小伙伴可以自行阅读:一文学完C语言【完整版】在本篇博文中,我们将会介绍C语言一些常用的库和系统函数。stdio.hstdio.h是C语言的标准I/O库,用于读取和写入文件,也用于控制台的输入和输出。标准I/O函数以下函数用于控制台......
  • C语言 找出 1000 以内的所有完数
    一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6的因子为1,2,3,而6=1+2+3,因此6是“完数”,编程序找出1000以内的所有完数,并按下面格式输出其因子:6itsfactorsare1,2,3这个程序找出1000以内的所有完数,并输出每个完数及其因子。(如果因子和等于该数,则该数为完数。)#i......
  • C语言 会员卡计费系统
    设计一个会员卡计费管理系统。功能要求:(1)新会员登记。(将会员个人信息及此会员的会员卡信息进行录入。)(2)会员信息修改。(3)会员续费。(会员出示会员卡后,管理人员根据卡号查找到该会员的信息并显示。此时可以进行续费,续费后,提示成功,并显示更新后的信息。)(4)会员消费结......
  • DAY 1: C语言异或(^)以及按位与(&)的用法
    1.异或(^)的定义        在C语言中,异或操作符是^。异或操作符用于对两个操作数执行按位异或运算,即只有在两个操作数对应位不同时,结果为1。即相同为0不同为1。2.重要结论    1.任何一个数,假定为a,0^a等于a(不进位计算求和),a^a等于0。        2.异或运......
  • 洛谷P5726 【深基4.习9】打分——C语言
    本题思路:1.先在for循环中分别求出最大值(max),最小值(min),以及它们的和(s);2.最后将它们的和减去最大值,最小值,然后就可以求平均值了,注意是除以n-2#include<stdio.h>intmain(){  intn;  scanf("%d\n",&n);  ints=0,max=-1000,min=300000;//max要小些,min要的......
  • C语言实现字符串排序
    如果只有英文字符且不区分大小写的话按照字典序排序可以用strcmp函数,两个字符串自左向右逐个字符相比(按ASCII值大小相比较)strcmp(s1,s2)当s1<s2时,返回为负数;当s1==s2时,返回值=0;当s1>s2时,返回正数。例如"A"<"C"、"d">"D"、"computer">"compare"如果想要不区分大小写的......
  • G3.【C语言】EasyX的窗口坐标体系和绘制基本图形
    左上角是坐标原点注意标题栏不计入坐标中getwidth()获取窗口宽度getheight()获取窗口高度画点头文件COLORREFgetpixel(intx,inty); //Getpixelcolorvoidputpixel(intx,inty,COLORREFcolor); //Setpixelcolor画线头文件线的坐标voidline(intx1,......