目录
什么是结构体?
在现实生活中的很多事物无法用单一类型的变量就能描述清楚,如:描述一个学生,需要姓名,年龄,性别,学号等。因此,我们需要一种类型能够描述这种复杂的事物,这种类型就是结构体。
结构体是一种构造(自定义)类型,是一些值的集合,这些值称为成员变量。这些成员变量可以是相同的类型,也可以是不同的类型(可以是变量、数组、指针,甚至是其他结构体)。
结构体的声明
struct tag
{
member-list;
};
声明一个描述学生的结构体:
结构体变量的定义和初始化
1.在结构体声明的同时定义和初始化:
2.声明后再定义和初始化:
3.不按成员变量的顺序初始化:
嵌套结构体的定义和初始化:
使用typedef对结构体类型重命名后不能声明的同时定义和初始化:
结构体成员的访问
结构体的成员变量可以通过操作符 **.**和 -> 来访问。
结构体.成员变量:
结构体指针(地址)-> 成员变量:
结构体传参
结构体传参和普通变量传参一样有传值调用和传址调用两种方式。
传值调用(形参是实参的一份临时拷贝,形参改变不影响实参):
传址调用:
哪种传参方式更好?
函数传参的时候,参数是需要压栈的。如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,就会导致消耗更多的内存和性能的下降。因此,除非业务特殊需要,传参时传结构体地址更优。