暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

C语言基础教程(七):结构体与联合体

一如老师 2024-11-10
212

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语言中用于组织复杂数据的强大工具,掌握它们有助于编写更加清晰、模块化的代码。


七、实践与思考

实践:

  1. 结构体练习:编写一个程序,定义一个包含姓名、年龄、工资的结构体数组,用于存储3名员工的信息,并输出他们的详细信息。

  2. 联合体练习:编写一个程序,定义一个联合体,包含整型、浮点型和字符数组,尝试分别给各成员赋值,并观察结果。

思考:

  • 结构体与联合体的选择:在什么情况下应该使用结构体,什么时候使用联合体?

  • 内存对齐与大小:思考结构体和联合体在内存中的存储方式,以及它们的大小是如何确定的。


八、加入我们的知识星球!

想要获取更多的学习资源和指导吗?加入我们的「一如老师的编程与设计星球」**,你将获得:

  • 独家学习资料:丰富的教程、源码、笔记等资源。

  • 答疑解惑:一对一的学习问题解答,助你突破难点。

  • 项目实战:参与真实项目,提升实战能力,积累经验。

  • 职业指导:提供就业、面试等方面的建议,助你迈向理想职业。

扫码立即加入,和更多志同道合的伙伴一起成长!


九、加入我们的学习群!

为了更好地交流和学习,欢迎大家加入 「一如老师编程设计交流中心」,与更多的朋友一起进步!

  • QQ群号:965696190

  • 微信群:扫描下方二维码加入


十、期待你的反馈!

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


十一、下期预告

下一期,我们将分享C语言基础教程(八):文件操作与预处理指令,深入了解如何在C语言中进行文件的读写,以及预处理指令的使用,敬请期待!


版权声明

本文为原创内容,转载请注明出处。


喜欢这篇文章吗?

如果觉得本篇内容对你有帮助,请点击右下角的“赞”和“在看”,并分享给更多的朋友!你的支持是我持续创作的动力!❤️


文章转载自一如老师,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论