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

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


目录

  • 结构体类型的声明

  • 结构体成员访问

  • 结构体传参


前言

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

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

例如让我们去描述一本书

要处理的数据有:

  1. 书名

  1. 作者

  1. 定价

...

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语言】_第1张图片

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

  • (->)操作符

  • 结构:结构体指针->结构体成员

玩转结构体---【C语言】_第2张图片


三、结构体传参

传参有两种

  • 值传递地址传递

值传递

玩转结构体---【C语言】_第3张图片

地址传递

玩转结构体---【C语言】_第4张图片

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

完结

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

你可能感兴趣的:(【C语言】藏宝图,c语言,开发语言)