本章内容
关键字:struct typedef
操作符:(.) (->)
结构体类型的声明
结构体初始化
结构体成员访问
结构体传参
1.结构体声明
1.1结构的基础知识
结构:一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。
对比数组:数组是一组相同类型元素的集合。
C语言中的类型(内置):char、short、int、long、long long、folat、double
在C语言中,我们设计程序时,最重要的步骤之一就是选择表示数据的方式。生活中,许多情况下,以上简单的数据类型甚至是数组都不能满足我们的要求。因此,C提供了结构体变量类型以提
高我们表示数据的能力。
1.2结构体的声明和结构体变量的创建
![](https://img-blog.csdnimg.cn/direct/cd70f5a3601e487a9915eebb7d8eb6bb.png)
![](https://img-blog.csdnimg.cn/direct/4edf4c640e214566a2cf2c1f7616728b.png)
大多数情况下因为结构体变量类型较长,所以通常用typedef更改变量类型名(如图二)
结构体的声明并不会占用内存,只有当你创建了结构体变量之后才会申请内存空间
1.3结构体成员的类型
结构的成员可以是标量、数组、指针,甚至是其他结构体。
1.4 结构体变量的定义和初始化
初始化:定义变量的同时赋初值。
结构体可以嵌套使用
![](https://img-blog.csdnimg.cn/direct/2e14925d0e814d1eafec00ac7c399a18.png)
![](https://img-blog.csdnimg.cn/direct/46015219184b4f55bc41f5b0834aa4ce.png)
2. 结构体成员的访问
2.1结构体变量访问成员
结构变量的成员是通过点操作符(
.
)访问的。点操作符接受两个操作数
2.2结构体指针访问指向变量的成员
结构体的指针是通过箭头操作符(->)访问的。箭头操作符接受两个操作数
![](https://img-blog.csdnimg.cn/direct/0f2c5bf805c74d9f929817871328b5c9.png)
3. 结构体传参
直接将结构体变量传参,形参(图6中的p)是实参(图6中的p1)的一份临时拷贝,使用形参会在内存中另外开辟一块内存空间存储,如果实参过大,会拷贝大量时间,会导致空间和时间的浪费。
所以在图6中, 传参首选print()函数
原因:
函数传参的时候,参数是需要压栈的。
如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的
下降。
结论:
结构体传参的时候,要传结构体的地址。