⛩️博主主页:@威化小餅干
📝系列专栏:【C语言】藏宝图
🎏 ✨绳锯⽊断,⽔滴⽯穿!一个编程爱好者的学习记录!✨
目录
结构体类型的声明
结构体成员访问
结构体传参
前言
我们是否有想过,为什么会有结构体呢?
在C语言中,我们学过很多种数据类型,如char、short、int、long、float、double等等,但是仅靠这些数据类型难以去描述我们生活中的生活对象的。
例如让我们去描述一本书
要处理的数据有:
书名
作者
定价
...
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};//另一种嵌套初始化
二、结构体成员访问
结构体成员可以通过 (.)操作符和 (->)操作符进行访问。
(.)操作符访问
结构:结构体变量 . 结构体成员
有时侯我们得到的不是结构体变量,而是指向一个结构体的指针,则使用(->)操作符。
(->)操作符
结构:结构体指针->结构体成员
三、结构体传参
传参有两种
值传递和地址传递
值传递:
地址传递:
小结:结构体传参时,尽量要传结构的地址,效果更好一些。
完结
✨✨创作不易,还请各位小伙伴多多点赞关注收藏✨✨