1. 结构体的声明
1.1 结构的基础知识
结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。
1.2 结构的声明
![](https://img-blog.csdnimg.cn/img_convert/40a1a983375a77c7ac048acd7ca104f0.png)
1.3 结构成员的类型
结构的成员可以是标量、数组、指针,甚至是其他结构体。
1.4 结构体变量的定义和初始化
有了结构体类型,那如何定义变量,其实很简单。
![](https://img-blog.csdnimg.cn/img_convert/ad8acd52b37f7e2a7181d7cbd5f56573.png)
![](https://img-blog.csdnimg.cn/img_convert/a805f62f32d4c3bbe84fb77788ca92ae.png)
2. 结构体成员的访问
结构体变量访问成员
结构变量的成员是通过点操作符(.)访问的。点操作符接受两个操作数。
![](https://img-blog.csdnimg.cn/img_convert/5953c995301586c8a418615b5b342fda.png)
我们可以看到 s 有成员 name 和 age ;
那我们如何访问s的成员
![](https://img-blog.csdnimg.cn/img_convert/b728179e867fedf6721b2e4edd281786.png)
结构体指针访问指向变量的成员
有时候我们得到的不是一个结构体变量,而是指向一个结构体的指针。
那该如何访问成员
![](https://img-blog.csdnimg.cn/img_convert/725fdf3d1a2fbd5536f15183ea63141c.png)
3. 结构体传参
![](https://img-blog.csdnimg.cn/img_convert/45a5dc393d6f2ff9828a1cd617cd4895.png)
上面的 print1 和 print2 函数哪个好些?
答案是:首选print2函数。
原因:
函数传参的时候,参数是需要压栈的。
如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的
下降。
结论:
结构体传参的时候,要传结构体的地址。