C语言学习笔记之结构体(一)

目录

什么是结构体?

结构体的声明

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

结构体成员的访问

结构体传参


什么是结构体?

在现实生活中的很多事物无法用单一类型的变量就能描述清楚,如:描述一个学生,需要姓名,年龄,性别,学号等。因此,我们需要一种类型能够描述这种复杂的事物,这种类型就是结构体。

结构体是一种构造(自定义)类型,是一些值的集合,这些值称为成员变量。这些成员变量可以是相同的类型,也可以是不同的类型(可以是变量、数组、指针,甚至是其他结构体)。

结构体的声明

复制代码
struct tag
{
member-list;
};

声明一个描述学生的结构体:

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

1.在结构体声明的同时定义和初始化:

2.声明后再定义和初始化:

3.不按成员变量的顺序初始化:

嵌套结构体的定义和初始化:

使用typedef对结构体类型重命名后不能声明的同时定义和初始化

结构体成员的访问

结构体的成员变量可以通过操作符 **.**和 -> 来访问。

结构体.成员变量:

结构体指针(地址)-> 成员变量:

结构体传参

结构体传参和普通变量传参一样有传值调用传址调用两种方式。

传值调用(形参是实参的一份临时拷贝,形参改变不影响实参):

传址调用:

哪种传参方式更好?

函数传参的时候,参数是需要压栈的。如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,就会导致消耗更多的内存和性能的下降。因此,除非业务特殊需要,传参时传结构体地址更优。

相关推荐
xian_wwq2 分钟前
【学习笔记】深度认知系列-第13讲AI Agent时代到来——从“回答问题”到“执行任务”
人工智能·笔记·学习
蜡台5 分钟前
Kotlin 零基础完整版实战教程|从语法入门到Android工程实战
android·开发语言·kotlin
程序猿炎义7 分钟前
【llm-algo-leetcode学习笔记】量化优化手段
笔记·学习
HugoStudio_SWAN11 分钟前
洛谷 P10719 \[GESP202406 五级] 黑白格——暴力美学与图像处理的最小外接矩形
c++·图像处理·人工智能·学习·程序人生·算法·目标跟踪
那年窗外下的雪.19 分钟前
AIDC 学习日志|第 20 天|多归属业务验收与哈希不均定位
学习·算法·哈希算法
jimy122 分钟前
C++ 的 “移动语义”——Move Semantics
开发语言·c++
xian_wwq23 分钟前
【学习笔记】深度认知系列- 第15讲 AI算力战争——GPU、光通信与太空数据中心
笔记·学习
码云数智-园园25 分钟前
C++ STL 容器怎么选?vector、list、map、unordered_map 优缺点对比
java·开发语言
en.en..32 分钟前
竖线 |:管道、按位或、掩码组合
java·开发语言
雨田言炎38 分钟前
2026/9/5 C复习笔记(一)
c语言·笔记