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


    结构体与共用体的概述

    在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

    • 直接定义结
  • 相关阅读:
    一名前端工程师自检清单与思考(来吧,干完这套清单年薪30不是梦)
    GEO生信数据挖掘(三)芯片探针ID与基因名映射处理
    蓝牙耳机南卡和JBL哪款好用?半入耳耳机南卡和JBL详细对比评测
    UVa658 It’s not a Bug, it’s a Feature!(Dijkstra)
    Selenium常用操作之单选复选框、下拉列表、键盘、截屏、断言、(显式隐式)等待
    分布式工厂如何使用工业物联网云平台去提高效率
    Win11连接投影仪没反应怎么解决?
    智慧医院智能化方案
    Spring MVC 中使用 RESTFul 编程风格
    二叉树的直径
  • 原文地址:https://blog.csdn.net/2201_75876277/article/details/133972832