一、结构体类型的声明

1.1、结构体基础知识

结构体是一些值的集合,这些值被称为成员变量。结构体的每一个成员都可以是不同类型的变量。

区分数组:

数组:一组相同类型的元素集合

结构体:一组可以使不同类型的元素集合

1.2、结构体的声明

C语言—结构体初阶_栈

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

2.1、定义:

声明是定义变量—全局变量

C语言—结构体初阶_结构体_02

在函数中定义—局部变量

C语言—结构体初阶_C语言_03

C语言—结构体初阶_C语言_04


2.2、初始化:

简单初始化

C语言—结构体初阶_栈_05

特殊初始化:

结构体嵌套结构体

C语言—结构体初阶_结构体_06


三、结构体成员的访问

3.1、(.)操作符访问(变量)

格式:结构体变量.成员

C语言—结构体初阶_C语言_07

3.2、(->)操作符访问(指针)

格式:结构体变量指针->成员

C语言—结构体初阶_结构体_08


四、结构体传参

4.1、传值调用(传递变量)

函数需要开辟一个相同变量的空间,来存储传递的变量,在时间和空间上存在浪费。不可以改变原变量的值

C语言—结构体初阶_C语言_09

C语言—结构体初阶_结构体_10

4.2、传址调用(传递地址)

需要开辟一个地址空间来接收地址(4/8字节),可以通过地址改变原变量的值。

C语言—结构体初阶_C语言_11

C语言—结构体初阶_结构体_12

两种方式的打印效果一致,那么print1()和print2()那个更高?

答案:首选print2()函数

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

结论:结构体传参是,要传结构体地址。效率高,可以修改原来的值。


扩展知识:函数调用的参数压栈

栈,是一种数据结构,

特点:先进后出,后进先出

只能从栈顶存放或取出数据

往栈中存放数据—压栈

从栈中取出数据—出栈

C语言—结构体初阶_C语言_13

传参压栈解释:

C语言—结构体初阶_C语言_14

制作不易,喜欢就点赞收藏吧~~~