玩转结构体---【C语言】
  joJp3k0vX7Vq 2023年11月02日 42 0



⛩️博主主页:@威化小餅干📝系列专栏:【C语言】藏宝图🎏 ✨绳锯⽊断,⽔滴⽯穿!一个编程爱好者的学习记录!✨


目录

  • 结构体类型的声明
  • 结构体成员访问
  • 结构体传参

前言

我们是否有想过,为什么会有结构体呢?

在C语言中,我们学过很多种数据类型,如char、short、int、long、float、double等等,但是仅靠这些数据类型难以去描述我们生活中的生活对象的。

例如让我们去描述一本书

要处理的数据有:

  1. 书名
  2. 作者
  3. 定价

...

char BookName[20] //书名
char Name[10]     //作者
int price         //定价
...

如果这样去定义了一本书,再要定义第二本书时就要再写一遍。这样不仅麻烦,而且很容易混淆。

我们可以看到,想要去描述一个生活中的对象时,是需要用到多种数据类型,一起去描述一个复杂的对象,此时就需要借助结构体的力量了。


一、结构体的声明

1、1结构体的基础知识

结构体是将不同类型的数据按照一定的功能需求进行整体封装,封装的数据类型与大小均可以由用户指定。
结构体是一些值的集合。这些值称为成员变量。 结构的每个成员可以是不同的类型的变量。
除此之外,我们之前还学过数组,数组也是一些值的集合,但与结构体不同的是,数组是一些相同类型的值的集合。

1、2结构的声明

struct tag
{
    member-list;

}variable-list;

例如:

struct Book
{
    char BookName[20]; //书名
    char Name[10];     //作者
    int price;         //定价
}b1;

int main()
{
    struct Book b1;
    return 0;
}

使用typedef,对结构体重名成Book,这样在使用时写起来变得简单。

typedef struct Book
{
    char name[10];
    int price;
}Book;

int main()
{
    Book b3;
    return 0;
}

1、3结构体类型

结构的成员可以是标量、数组、指针、或者是其它结构体。

1、4结构体变量的定义和初始化

//结构体变量的定义
struct point
{
    int x;
    int y;
}p1; //声明类型的同时定义变量p1

struct point p2;  //单独定义结构体变量p2

//初始化的方式
struct stu
{
    char name[10];
    int age;
}
struct stu s = {"zhangsan",19};//初始化

struct Node
{
    int data;
    struct point p;
    struct Node* next;
}n1 = {10,(4,5),NULL};     //结构体嵌套初始化

struct Node n2 = {20,(5,6),NULL};//另一种嵌套初始化

二、结构体成员访问

(.)操作符和 (->)操作符进行访问。

  • (.)操作符访问
  • 结构:结构体变量 . 结构体成员


玩转结构体---【C语言】_Powered by 金山文档


有时侯我们得到的不是结构体变量,而是指向一个结构体的指针,则使用(->)操作符。

  • (->)操作符
  • 结构:结构体指针->结构体成员


玩转结构体---【C语言】_c语言_02



三、结构体传参

传参有两种

  • 值传递和地址传递

值传递:


玩转结构体---【C语言】_初始化_03


地址传递:


玩转结构体---【C语言】_初始化_04


小结:结构体传参时,尽量要传结构的地址,效果更好一些。

完结

✨✨创作不易,还请各位小伙伴多多点赞关注收藏✨✨

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
joJp3k0vX7Vq