C语言结构体详解与应用示例

需积分: 9 2 下载量 46 浏览量 更新于2024-09-12 收藏 10KB TXT 举报
"C语言结构体" 在C语言中,结构体(struct)是一种复合数据类型,它允许我们将不同类型的数据组合在一起,形成一个整体。这种数据结构非常适合表示具有多个属性的对象,如学生信息、员工记录等。通过结构体,我们可以定义自定义的数据类型,从而提高代码的可读性和复用性。 1. 定义结构体: 在C语言中,使用`struct`关键字来定义结构体。例如,定义一个名为`student`的结构体,包含学号(num)、姓名(name)、性别(sex)、年龄(age)、分数(score)和地址(addr)字段: ```c struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }; ``` 结构体定义完成后,可以通过`struct tag`的方式声明结构体变量,如`struct student student1, student2;`。 2. 初始化结构体变量: 可以在声明结构体变量时直接初始化,例如: ```c struct student student1 = {10101, "LinLin", 'M', 20, 85.5, "123beijingroad"}; ``` 3. 访问结构体成员: 使用`.`操作符访问结构体内的成员,如`student1.num`表示访问`student1`的学号。 4. 指针与结构体: 结构体变量可以赋值给指针,通过指针访问结构体成员。例如: ```c struct student *ptr = &student1; printf("NO.:%d\nname:%s\nsex:%c\naddress:%s\n", ptr->num, ptr->name, ptr->sex, ptr->addr); ``` `ptr->num`相当于`(*ptr).num`,通过指针访问结构体成员。 5. 结构体作为函数参数: 结构体可以作为函数的参数传递,但需要注意,如果传递的是结构体变量的地址(即指针),那么函数内部对指针的修改会影响到原始的结构体变量。 6. 结构体嵌套: 结构体可以嵌套其他结构体,如在`struct student`中包含一个`struct data`来表示生日: ```c struct data { int month; int day; int year; }; struct student { int num; char name[20]; char sex; int age; struct data birthday; char addr[30]; }; ``` 7. 结构体数组: 可以声明结构体类型的数组,例如`struct student students[10];`,用于存储多个学生的数据。 8. 结构体动态分配内存: 也可以使用`malloc()`函数动态分配结构体的内存,例如`struct student *ptr = (struct student*)malloc(sizeof(struct student));`,但别忘了在不再使用时调用`free(ptr)`释放内存。 9. 结构体与复制: 当将一个结构体赋值给另一个结构体时,C语言默认执行逐个成员的浅拷贝,这意味着如果结构体中包含指针,拷贝后的结构体会共享相同的内存。若需要深拷贝,需要编写自定义的拷贝函数。 通过以上知识点,我们可以更好地理解和使用C语言中的结构体,创建复杂的数据结构并处理各种数据。在实际编程中,结构体是组织和管理数据的重要工具。