C语言中的结构体:从定义到传递 概述有时我们需要将不同类型的数据组合成一个有机的整体如一个学生有学号/姓名/性别/年龄/地址等属性这时候可通过结构体实现结构体(struct)可以理解为用户自定义的特殊的复合的“数据类型”结构体变量的定义和初始化定义结构体变量的方式先声明结构体类型再定义变量名在声明类型的同时定义变量语法格式代码语言cAI代码解释// 先声明结构体类型再定义变量名 struct 结构体名 { 成员列表 }; struct 结构体名 变量名; // 在声明类型的同时定义变量 struct 结构体名 { 成员列表 }变量名;示例代码代码语言cAI代码解释// 结构体类型的定义 struct stu { char name[50]; int age; }; // 先定义类型再定义变量常用 struct stu s1 {mike, 18}; // 定义类型同时定义变量 struct stu2 { char name[50]; int age; }s2 {yoyo, 19};结构体成员的使用如果是结构体变量通过 . 操作成员如果是结构体指针变量通过 - 操作成功代码语言cAI代码解释#include stdio.h #include string.h // 结构体类型的定义 struct stu { char name[50]; int age; }; int main() { // 定义结构体变量同时初始化 struct stu s {mike, 18}; // 打印成员变量 printf(%s, %d\n, s.name, (s)-age); // 修改成功变量的内容 strcpy(s.name, yoyo); s.age 19; // 打印成员变量 printf(%s, %d\n, s.name, (s)-age); return 0; }结构体做函数参数结构体值传参传值是指将参数的值拷贝一份传递给函数函数内部对该参数的修改不会影响到原来的变量示例代码代码语言cAI代码解释#include stdio.h #include string.h // 结构体类型的定义 struct stu { char name[50]; int age; }; // 函数定义 void func(struct stu temp) { strcpy(temp.name, yoyo); temp.age 20; printf(函数内部%s, %d\n, temp.name, temp.age); } int main() { // 定义结构体变量 struct stu s {mike, 18}; // 调用函数值传递 func(s); // 打印成员变量 printf(函数外部%s, %d\n, s.name, (s)-age); return 0; }运行结果代码语言shellAI代码解释函数内部yoyo, 20 函数外部mike, 18结构体地址传递传址是指将参数的地址传递给函数函数内部可以通过该地址来访问原变量并对其进行修改。示例代码代码语言cAI代码解释#include stdio.h #include string.h // 结构体类型的定义 struct stu { char name[50]; int age; }; // 函数定义 void func(struct stu *p) { strcpy(p-name, yoyo); p-age 20; printf(函数内部%s, %d\n, p-name, p-age); } int main() { // 定义结构体变量 struct stu s {mike, 18}; // 调用函数地址传递 func(s); // 打印成员变量 printf(函数外部%s, %d\n, s.name, (s)-age); return 0; }运行结果代码语言cAI代码解释函数内部yoyo, 20 函数外部yoyo, 20接下来我们来写一个小案例练习题目定义一个结构体Person包含人的姓名和年龄两个成员变量。编写程序创建一个Person类型的结构体数组包含3个人的信息并输出每个人的姓名和年龄。代码示例代码语言cAI代码解释#include stdio.h #include string.h struct Person { // Person是结构体名 char name[20]; int age; }; struct Person person[3] { // person[3]是结构体数组 {喜羊羊, 22}, // 结构元素 {懒羊羊, 23}, {沸羊羊, 25} }; int main() { // 定义一个结构体Person包含人的姓名和年龄两个成员变量。编写程序创建一个Person类型的结构体数组包含3个人的信息并输出每个人的姓名和年龄。 for(int i 0; i 3; i){ printf(姓名%s年龄%d\n, person[i].name, person[i].age); } return 0; }总结通过本篇博客我们了解了C语言中结构体的重要性以及如何运用它来组织和管理数据。结构体不仅是一种数据类型更是程序设计中的重要工具能够帮助我们处理各种复杂的数据结构实现更加高效、清晰的代码。希望本文能够对读者在学习和使用C语言时有所帮助也欢迎大家分享自己对结构体的理解和应用经验共同探讨C语言编程的知识。