C 语言03:结构体——自定义数据类型的万能基石
结构体struct是 C 语言的核心自定义数据类型用于将不同类型的数据如姓名、年龄、日期打包成一个整体极大简化了复杂数据的管理。本文从定义到使用极简解析结构体的核心用法。一、结构体类型定义造一个新 “类型”先用struct关键字定义结构体模板本质是创建一个新的数据类型与int、char地位等同。语法格式struct 结构体名 { 成员类型1 成员名1; 成员类型2 成员名2; // ...更多成员 };示例学生结构体// 定义学生结构体包含姓名和年龄 struct Student { char name[20]; // 姓名 int age; // 年龄 };二、定义结构体变量 初始化定义好类型后就可以像定义int一样定义变量。1. 定义方式struct Student stu1; // 普通变量 struct Student stu2 {曹操}; // 部分初始化剩余补0 struct Student stu3 {刘备,25}; // 全部初始化三、访问成员变量 vs 指针结构体的访问符号由变量类型决定核心口诀变量用点指针用箭头。1. 普通变量用.// 输出 printf(%s,%d, stu3.name, stu3.age); // 修改字符串需用strcpy strcpy(stu1.name, 孙权); stu1.age 18;2. 结构体指针用-结构体指针用于保存变量地址访问成员时必须用-C 语言特有简化写法。struct Student stu {曹操, 23}; struct Student* ps stu; // 定义指针 // 访问成员 printf(%s,%d, ps-name, ps-age); // 修改成员 ps-age 30;四、结构体数组批量存储数据结构体数组用于存储多个同类型对象是批量管理数据的利器。1. 定义与初始化// 定义含3个元素的学生数组 struct Student crr[3] { {曹操, 23}, {刘备, 25}, {孙权, 18} };2. 遍历方式(1) 下标遍历int len sizeof(crr) / sizeof(crr[0]); for(int i0; ilen; i) { printf(%s,%d\n, crr[i].name, crr[i].age); }(2) 指针遍历struct Student* ps crr; // 指向数组首元素 while(ps crr 3) { printf(%s,%d\n, ps-name, ps-age); ps; // 指针后移 }五、结构体作为函数参数结构体数组传参本质传指针只需传递数组首地址和长度。示例封装打印函数// 接收结构体指针和长度 void Show(struct Student* arr, int len) { for(int i0; ilen; i) { printf(%s,%d\n, arr[i].name, arr[i].age); } } // main中调用 int main() { struct Student crr[3] {{曹操,23},{刘备,25},{孙权,18}}; int len sizeof(crr) / sizeof(crr[0]); Show(crr, len); // 传递数组名即首地址 return 0; }六、结构体嵌套组合复杂数据结构体成员可以是另一个结构体适合描述包含关系如 “人” 包含 “生日”。示例日期结构体套入个人结构体// 日期结构体 struct Date { int year; int month; int day; }; // 个人结构体包含日期 struct Person { char name[20]; unsigned long long id; struct Date birthday; // 成员是另一个结构体 }; // 使用 int main() { struct Person per {刘备, 12345, {161,1,1}}; // 访问嵌套成员连续使用 . printf(姓名:%s 生日:%d-%d-%d, per.name, per.birthday.year, per.birthday.month, per.birthday.day); return 0; }七、核心总结场景访问符号示例普通变量.stu.name结构体指针-ps-name结构体数组下标 / 指针crr[i]/ps-age嵌套结构体连续访问per.birthday.year核心口诀结构体是自定义类型的积木掌握定义、访问、数组和传参四大核心即可玩转复杂数据。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2425329.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!