• 项目十结构体与共用体的基本应用


    结构体与共用体的概述

    在C语言中,构造类型是把多个数据结合在一起,并将每个数据称作为构造类型的”成员“。

    数组就是构造类型中的一种,由多个相同数据类型的"成员"组成.。结构体和共用体可以由多个不同数据类型的“成员”组成。

    共同体类型同结构体类型一样,属于构造类型,也称联合体,定义方法都相同

    共同体类型同结构体类型之间的区别

    • 结构体的各个成员会占用不同的内存,互相之间没有影响;
    • 共用体的所有成员占有同一段内存,修改一个成员会影响其余成员;
    • 结构体占用的内存大于等于所有成员占有的内存的总和;
    • 共用体占用的内存等于最长的成员占用的内存;
    • 共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,如果给新的成员赋值,就会把原来成员的值覆盖掉

    结构体

    1. 结构体类型的定义

    在定义之前,需要先定义结构体类型,再次定义该结构体类型的变量

    • 结构体类型定义的一般形式:
    1. struct 结构体类型名称 {
    2. 成员类型1 成员名1;
    3. 成员类型2 成员名2;
    4. ...
    5. 成员类型n 成员名n;
    6. };

    其中,Struct是关键字,结构体类型名称的命名规则满足标识符命名规则,用于标识该结构体类型。成员类型可以是任意的数据类型,包括基本类型、指针类型、数组类型、结构体类型等。成员名是该成员在结构体中的名称。

    例如,定义一个学生信息的结构体:

    1. struct Student {
    2. int id; // 学号
    3. char name[20]; // 姓名
    4. int age; // 年龄
    5. float score; // 成绩
    6. };

    这里,Student是一个结构体标识符,id、name、age和score是该结构体的四个成员,分别表示学生的学号、姓名、年龄和成绩。

    • 类型定义的一般形式
    1. typedef 已有类型 新类型名;

    其中,已有类型可以是任意的数据类型,如intfloatcharstruct等,新类型名是你自己定义的一个新类型名,可以是任意合法的标识符。

    例如,定义一个int型别名my_int

    1. typedef int my_int;

    这样,我们就可以使用my_int来代替int的使用:

    1. my_int a = 100;

    结构体变量

    结构体定义后可以作为一种已存在的数据类型使用,但是它只是一个模型,没有具体的数据,只是告诉编译系统该结构由哪些数据类型组成,各占多少字节,并当成一个整体处理,同时编译系统没有在内存中给结构体分配内存空间

    1. 结构体(struct)变量的定义
    • 先定义结构体类型,在定义结构体变量
    1. struct 结构体类型名
    2. {
    3. 数据类型 成员名1
    4. 数据类型 成员名2
    5. ...
    6. 数据类型 成员名n;
    7. };
    8. struct 结构体类型名 变量名;

    示例代码如下:

    1. struct student
    2. {
    3. int sno;
    4. char name[10];
    5. char classname[20];
    6. float qrade[5];
    7. };
    8. struct student stul;

    这里定义了一个名为 student 的结构体类型,它有四个成员,分别为学号 sno、姓名 name、班级名称 classname 和五门课程的成绩 grade。然后定义了一个结构体变量 stul,该变量的类型为 struct student

    • 在定义结构体类型同时定义结构体变量
    1. struct 结构体类型名
    2. {
    3. 数据类型 成员名1
    4. 数据类型 成员名2
    5. ...
    6. 数据类型 成员名n;
    7. }结构体变量;

    示例代码如下:

    1. struct student
    2. {
    3. int sno;
    4. char name[10];
    5. char classname[20];
    6. float qrade[5];
    7. }stul;

    这里定义了一个名为 student 的结构体类型,和之前一样,它有四个成员,分别为学号 sno、姓名 name、班级名称 classname 和五门课程的成绩 grade。在结构体类型定义的最后,直接定义了一个名为 stul 的结构体变量,该变量的类型为 struct student

    • 直接定义结
  • 相关阅读:
    (附源码)计算机毕业设计SSM建筑材料采购管理系统
    【Spring面试】十、SpringBoot相关
    Go语言常见类型转换(int、int32,int64,float32、float64与string类型互转)
    关于Flask_自定义路由转换器的方法和使用
    DeFi 如何从破茧重生?
    智能算法学习指导
    IO流(3)
    03-系统篇-内存碎片
    Kubernetes-in-action (二)
    「津津乐道播客」#386 原汤话原食:谁还不是个“白字先生”?
  • 原文地址:https://blog.csdn.net/2201_75876277/article/details/133972832