• 了解结构体在编程中的应用与用法


     

    目录

    1. 结构体的基本概念

    2. 结构体的声明与初始化

    3. 结构体的嵌套与数组

    4. 结构体与指针

    5. 结构体的用法实例:学生成绩管理系统


    在计算机编程中,结构体(Struct)是一种重要的数据类型,它允许我们组织和存储不同类型的数据,并为这些数据定义自定义的数据结构。本篇博客将深入介绍结构体的用法,让你更好地理解和利用这一概念。

    1. 结构体的基本概念

    结构体是一种用户自定义的数据类型,它允许你将不同类型的数据组合在一起,形成一个单一的数据单元。与简单的数据类型(整数、浮点数等)不同,结构体可以包含多个字段,每个字段可以是不同的数据类型。

    1. struct Person {
    2. char name[50];
    3. int age;
    4. float height;
    5. };

    2. 结构体的声明与初始化

    在使用结构体之前,需要先声明它并为其分配内存空间。结构体的初始化可以通过直接赋值或者使用成员初始化列表来完成。

    1. struct Person person1; // 声明一个名为 person1 的 Person 结构体
    2. person1.age = 25; // 初始化 age 字段
    3. strcpy(person1.name, "John Doe"); // 初始化 name 字段
    4. person1.height = 175.5; // 初始化 height 字段

     或者使用成员初始化列表:

    struct Person person2 = {"Jane Doe", 30, 162.3};
    

    3. 结构体的嵌套与数组

    结构体可以嵌套在其他结构体中,形成复杂的数据结构。这种嵌套的方式可以更好地组织和表示真实世界的复杂关系。

    1. struct Address {
    2. char city[50];
    3. char street[100];
    4. };
    5. struct Contact {
    6. struct Person personInfo;
    7. struct Address addressInfo;
    8. };

    4. 结构体与指针

    结构体的指针使得我们能够动态地分配内存,减少不必要的资源浪费。

     

    1. struct Person *ptrPerson = malloc(sizeof(struct Person));
    2. ptrPerson->age = 28;
    3. strcpy(ptrPerson->name, "Alice");
    4. ptrPerson->height = 160.2;

    5. 结构体的用法实例:学生成绩管理系统

    通过一个简单的学生成绩管理系统的实例,演示结构体在实际应用中的用法。这包括学生信息的存储、添加、删除和查询操作。

    1. struct Student {
    2. int studentID;
    3. char name[50];
    4. float grade;
    5. };
    6. // 函数声明
    7. void addStudent(struct Student students[], int *count, struct Student newStudent);
    8. void removeStudent(struct Student students[], int *count, int studentID);
    9. void printStudentInfo(struct Student students[], int count);
    10. // 主函数
    11. int main() {
    12. struct Student allStudents[100];
    13. int studentCount = 0;
    14. struct Student newStudent1 = {101, "Bob", 85.5};
    15. struct Student newStudent2 = {102, "Alice", 92.0};
    16. addStudent(allStudents, &studentCount, newStudent1);
    17. addStudent(allStudents, &studentCount, newStudent2);
    18. printStudentInfo(allStudents, studentCount);
    19. removeStudent(allStudents, &studentCount, 101);
    20. printStudentInfo(allStudents, studentCount);
    21. return 0;
    22. }

  • 相关阅读:
    SpringBoot-30-shrio介绍、结构和快速实践
    【C++】构造函数分类 ② ( 在不同的内存中创建类的实例对象 | 栈内存中创建实例对象 | new 关键字创建对象 )
    如何解决:navicat中Redis(本地主机:6379):连接被拒绝
    UE5发布时出现SDK NOT Setup错误解决方法
    ElasticSearch 查询方法示例 java
    SpringBoot 12 整合 JDBC
    程序环境和预处理
    Windows10 前端项目所需的node.js安装环境
    redis学习完整版
    el-tree实现表格方式菜单
  • 原文地址:https://blog.csdn.net/m0_74053536/article/details/134431045