C语言基础教程(七):结构体与联合体
前言
亲爱的读者朋友们,大家好!👋
欢迎回到一如老师的公众号,今天是我们的第十四天更新。在本期内容中,我们将深入探讨结构体与联合体,这是C语言中用于定义自定义数据类型的重要工具。通过使用结构体和联合体,我们可以更方便地管理复杂的数据。
无论你是编程初学者,还是希望加深理解的开发者,今天的内容都会对你大有裨益。准备好了吗?让我们一起开始吧!🚀
一、结构体的基本概念
1. 什么是结构体?
结构体(struct)是C语言中用于将不同类型的数据组合在一起的一种数据结构。它允许我们将多个相关的变量组合成一个整体,方便管理和使用。
2. 结构体的定义
定义结构体的语法:
struct 结构体名 {
数据类型 成员名1;
数据类型 成员名2;
// ...
};
示例代码:
#include <stdio.h>
struct Student {
int id;
char name[50];
float score;
};
int main() {
struct Student student1;
student1.id = 1001;
strcpy(student1.name, "张三");
student1.score = 95.5;
printf("学号:%d\n", student1.id);
printf("姓名:%s\n", student1.name);
printf("成绩:%.2f\n", student1.score);
return 0;
}
二、结构体的使用
1. 结构体变量的声明与初始化
可以在定义结构体的同时声明变量:
struct Student {
int id;
char name[50];
float score;
} student1, student2;
也可以使用 typedef
为结构体定义别名:
typedef struct {
int id;
char name[50];
float score;
} Student;
Student student1, student2;
2. 访问结构体成员
使用 .
运算符访问结构体的成员。
示例代码:
#include <stdio.h>
typedef struct {
int id;
char name[50];
float score;
} Student;
int main() {
Student student1 = {1001, "李四", 89.0};
printf("学号:%d\n", student1.id);
printf("姓名:%s\n", student1.name);
printf("成绩:%.2f\n", student1.score);
return 0;
}
三、结构体指针
可以使用指针指向结构体,并通过 ->
运算符访问成员。
示例代码:
#include <stdio.h>
typedef struct {
int id;
char name[50];
float score;
} Student;
int main() {
Student student1 = {1001, "王五", 92.0};
Student *pStudent = &student1;
printf("学号:%d\n", pStudent->id);
printf("姓名:%s\n", pStudent->name);
printf("成绩:%.2f\n", pStudent->score);
return 0;
}
四、结构体数组
可以定义结构体数组,方便管理多个相同类型的数据。
示例代码:
#include <stdio.h>
typedef struct {
int id;
char name[50];
float score;
} Student;
int main() {
Student students[3] = {
{1001, "张三", 85.0},
{1002, "李四", 90.5},
{1003, "王五", 78.0}
};
for(int i = 0; i < 3; i++) {
printf("学号:%d,姓名:%s,成绩:%.2f\n", students[i].id, students[i].name, students[i].score);
}
return 0;
}
五、联合体的基本概念
1. 什么是联合体?
联合体(union)是一种特殊的结构体,它的所有成员共享同一段内存。联合体的大小等于其最大成员的大小。
2. 联合体的定义与使用
定义联合体的语法:
union 联合体名 {
数据类型 成员名1;
数据类型 成员名2;
// ...
};
示例代码:
#include <stdio.h>
#include <string.h>
union Data {
int i;
float f;
char str[20];
};
int main() {
union Data data;
data.i = 10;
printf("data.i: %d\n", data.i);
data.f = 220.5;
printf("data.f: %.1f\n", data.f);
strcpy(data.str, "Hello");
printf("data.str: %s\n", data.str);
return 0;
}
注意:由于联合体的成员共享内存,修改一个成员的值可能会影响其他成员的值。
六、小结
在本节中,我们学习了结构体和联合体的定义、使用以及它们之间的区别。结构体和联合体是C语言中用于组织复杂数据的强大工具,掌握它们有助于编写更加清晰、模块化的代码。
七、实践与思考
实践:
结构体练习:编写一个程序,定义一个包含姓名、年龄、工资的结构体数组,用于存储3名员工的信息,并输出他们的详细信息。
联合体练习:编写一个程序,定义一个联合体,包含整型、浮点型和字符数组,尝试分别给各成员赋值,并观察结果。
思考:
结构体与联合体的选择:在什么情况下应该使用结构体,什么时候使用联合体?
内存对齐与大小:思考结构体和联合体在内存中的存储方式,以及它们的大小是如何确定的。
八、加入我们的知识星球!
想要获取更多的学习资源和指导吗?加入我们的「一如老师的编程与设计星球」**,你将获得:
独家学习资料:丰富的教程、源码、笔记等资源。
答疑解惑:一对一的学习问题解答,助你突破难点。
项目实战:参与真实项目,提升实战能力,积累经验。
职业指导:提供就业、面试等方面的建议,助你迈向理想职业。
扫码立即加入,和更多志同道合的伙伴一起成长!

九、加入我们的学习群!
为了更好地交流和学习,欢迎大家加入 「一如老师编程设计交流中心」,与更多的朋友一起进步!
QQ群号:965696190
微信群:扫描下方二维码加入

十、期待你的反馈!
如果你在学习过程中有任何疑问,或者有好的建议和想法,欢迎在下方留言。我会尽快回复你的疑问。

十一、下期预告
下一期,我们将分享C语言基础教程(八):文件操作与预处理指令,深入了解如何在C语言中进行文件的读写,以及预处理指令的使用,敬请期待!
版权声明
本文为原创内容,转载请注明出处。
喜欢这篇文章吗?
如果觉得本篇内容对你有帮助,请点击右下角的“赞”和“在看”,并分享给更多的朋友!你的支持是我持续创作的动力!❤️





