一、结构体的声明

1.1、结构的基础知识

结构体是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。
为什么要有结构体?

因为在实际问题中,一组数据往往有很多种不同的数据类型。例如,登记学生的信息,可能需要用到 char型的姓名,int型或 char型的学号,int型的年龄,char型的性别,float型的成绩。又例如,对于记录一本书,需要 char型的书名,char型的作者名,float型的价格。在这些情况下,使用简单的基本数据类型甚至是数组都是很困难的。而结构体(类似Pascal中的“记录”),则可以有效的解决这个问题。
结构体本质上还是一种数据类型,但它可以包括若干个“成员”,每个成员的类型可以相同也可以不同,也可以是基本数据类型或者又是一个构造类型。
结构体的优点:结构体不仅可以记录不同类型的数据,而且使得数据结构是“高内聚,低耦合”的,更利于程序的阅读理解和移植,而且结构体的存储方式可以提高CPU对内存的访问速度。

1.2 结构体的声明

c语言结构体类似于python c语言结构体有什么好处_数组

结构体的创建是没有在内存上开辟空间的,只有定义结构体变量的时候才开辟空间

1.3、结构成员的类型

结构的成员可以是标量、数组、指针,甚至是其他结构体

c语言结构体类似于python c语言结构体有什么好处_数据类型_02

1.4、结构体变量的定义和初始化

有了结构体类型,那如何定义变量。

c语言结构体类似于python c语言结构体有什么好处_操作符_03

二、结构体成员的访问

结构体变量访问成员 结构变量的成员是通过点操作符(.)访问的。点操作符接受两个操作数

c语言结构体类似于python c语言结构体有什么好处_操作符_04

结构体指针访问指向变量的成员 有时候我们得到的不是一个结构体变量,而是指向一个结构体的指针。 那该如何访问成员

c语言结构体类似于python c语言结构体有什么好处_数组_05

三、结构体传参

传值调用

c语言结构体类似于python c语言结构体有什么好处_c语言结构体类似于python_06


传址调用


c语言结构体类似于python c语言结构体有什么好处_c语言_07


上面的 print 和 print1 函数哪个好些?


答案是:首选print1函数。


原因:

函数传参的时候,参数是需要压栈的。
如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的下降。
结论:
结构体传参的时候,要传结构体的地址。