再识结构体

简介: 再识结构体

一、创建结构体的两种方法


image.png

第一种是在创建结构体类型后,直接创建结构体变量,注意此时的结构体变量是全局变量,而在主函数内部创建的结构体变量是局部变量


二、结构体初始化的“套娃”


image.png

结构体内部还可以再次定义结构体,但在初始化时,需要在{ } 里面再次{ }


三、结构体传参

先说结论,结构体传参需要传地址!


image.png

问题:print1和print2哪个更好?

解答:

第二种好。
第一种将结构体s这个实参直接传过去,所以需要一个形参进行接收,而形参又是实参的一份临时拷贝,所以需要再一次创建一个结构体,而一个结构体创建所需要的内存可能很大,而print2将地址传过去,只需要指针进行接受,只需要4个或8个字节的内存空间,相比较而言,内存空间就占的很少了


四、栈


image.png

栈是数据结构的一种,栈只能从顶上加减,有定义插入一个元素:压栈,删除一个元素:出栈。

内存区的分配:

image.png


image.png

当函数传参时,把参数传过去这一动作也称为压栈,即函数传参时,参数是需要压栈的。

相关文章
|
存储 编译器 C语言
C语言编程-结构体
C 数组允许定义可存储相同类型数据项的变量,结构是 C 编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。 结构体中的数据成员可以是基本数据类型(如 int、float、char 等),也可以是其他结构体类型、指针类型等。结构用于表示一条记录,假设您想要跟踪图书馆中书本的动态,您可能需要跟踪每本书的下列属性: Title Author Subject Book ID 定义结构 结构体定义由关键字 struct 和结构体名组成,结构体名可以根据需要自行定义。 struct 语句定义了一个包含多个成员的新的数据类型,struct 语句的格式如下: struct
10536 0
|
编译器 C语言 C++
进阶C语言——再识结构体
进阶C语言——再识结构体
|
算法 程序员
再学一道算法题: 选夫婿(结构体)
再学一道算法题: 选夫婿(结构体)
再学一道算法题: 选夫婿(结构体)
|
C语言
结构体-初阶
结构体-初阶
94 0
|
10月前
初阶结构体
初阶结构体
49 0
|
9月前
|
编译器 C语言 C++
【再识C进阶4】详细介绍自定义类型——结构体、枚举和联合
【再识C进阶4】详细介绍自定义类型——结构体、枚举和联合
|
程序员 C语言
【C语言】学数据结构前必学的结构体struct详细
本文讲解:学数据结构前必学的结构体struct详细。
|
编译器 C语言 C++
细讲C语言结构体(结构体内存对齐你懂了吗?)
结构体是一些值集合的,里面可以包括char,int,double等等的各种类型构成的一个新的类型,也就是说相当于自己基于C语言本身给出的类型自己把它组成一个集合。
115 0
细讲C语言结构体(结构体内存对齐你懂了吗?)
|
存储 编译器 C语言
【C语言】一篇让你彻底吃透(结构体与结构体位段)(上)
【C语言】一篇让你彻底吃透(结构体与结构体位段)(上)
98 0
|
存储 C语言 C++
【C语言】一篇让你彻底吃透(结构体与结构体位段)(下)
【C语言】一篇让你彻底吃透(结构体与结构体位段)(下)
131 0