目录
在计算机编程中,结构体(Struct)是一种重要的数据类型,它允许我们组织和存储不同类型的数据,并为这些数据定义自定义的数据结构。本篇博客将深入介绍结构体的用法,让你更好地理解和利用这一概念。
结构体是一种用户自定义的数据类型,它允许你将不同类型的数据组合在一起,形成一个单一的数据单元。与简单的数据类型(整数、浮点数等)不同,结构体可以包含多个字段,每个字段可以是不同的数据类型。
- struct Person {
- char name[50];
- int age;
- float height;
- };
在使用结构体之前,需要先声明它并为其分配内存空间。结构体的初始化可以通过直接赋值或者使用成员初始化列表来完成。
- struct Person person1; // 声明一个名为 person1 的 Person 结构体
- person1.age = 25; // 初始化 age 字段
- strcpy(person1.name, "John Doe"); // 初始化 name 字段
- person1.height = 175.5; // 初始化 height 字段
或者使用成员初始化列表:
struct Person person2 = {"Jane Doe", 30, 162.3};
结构体可以嵌套在其他结构体中,形成复杂的数据结构。这种嵌套的方式可以更好地组织和表示真实世界的复杂关系。
- struct Address {
- char city[50];
- char street[100];
- };
-
- struct Contact {
- struct Person personInfo;
- struct Address addressInfo;
- };
结构体的指针使得我们能够动态地分配内存,减少不必要的资源浪费。
- struct Person *ptrPerson = malloc(sizeof(struct Person));
- ptrPerson->age = 28;
- strcpy(ptrPerson->name, "Alice");
- ptrPerson->height = 160.2;
通过一个简单的学生成绩管理系统的实例,演示结构体在实际应用中的用法。这包括学生信息的存储、添加、删除和查询操作。
- struct Student {
- int studentID;
- char name[50];
- float grade;
- };
-
- // 函数声明
- void addStudent(struct Student students[], int *count, struct Student newStudent);
- void removeStudent(struct Student students[], int *count, int studentID);
- void printStudentInfo(struct Student students[], int count);
-
- // 主函数
- int main() {
- struct Student allStudents[100];
- int studentCount = 0;
-
- struct Student newStudent1 = {101, "Bob", 85.5};
- struct Student newStudent2 = {102, "Alice", 92.0};
-
- addStudent(allStudents, &studentCount, newStudent1);
- addStudent(allStudents, &studentCount, newStudent2);
-
- printStudentInfo(allStudents, studentCount);
-
- removeStudent(allStudents, &studentCount, 101);
-
- printStudentInfo(allStudents, studentCount);
-
- return 0;
- }