当前位置: 首页 > news >正文

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

目录

什么是结构体?

结构体的声明

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

结构体成员的访问

结构体传参


什么是结构体?

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

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

结构体的声明

struct tag
{
member-list;
};

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

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

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

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

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

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

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

结构体成员的访问

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

结构体.成员变量:

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

结构体传参

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

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

传址调用:

        哪种传参方式更好?

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

相关文章:

  • Android 车载 Audio 中 有关系统按键无声的问题排查小结
  • qi5uxeel算法分析流程记录libmsec.so
  • 14.微信小程序之地理定位功能
  • OSG学习记录
  • uniapp条件编译
  • object对象列表使用sorted函数按照对象的某个字段排序
  • 运维开发.Kubernetes探针与应用
  • 详细介绍运算符重载函数,清晰明了
  • 使用matplotlib绘制折线条形复合图
  • C语言| 求1到100之间所有能被3整除的数之和
  • 小程序发成绩
  • FinalShell 配置SSH密钥登陆
  • 云阅读(小说系统)看小说,管理小说
  • ubuntu安全加固
  • gmssl vs2010编译
  • 11111111
  • 30天自制操作系统-2
  • Android开源项目规范总结
  • css属性的继承、初识值、计算值、当前值、应用值
  • ES6语法详解(一)
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • linux学习笔记
  • Map集合、散列表、红黑树介绍
  • Python学习之路16-使用API
  • SpringCloud集成分布式事务LCN (一)
  • underscore源码剖析之整体架构
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 聚类分析——Kmeans
  • 聊聊flink的TableFactory
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 浅谈web中前端模板引擎的使用
  • 仓管云——企业云erp功能有哪些?
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • $.ajax()参数及用法
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (生成器)yield与(迭代器)generator
  • (四)模仿学习-完成后台管理页面查询
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .Net Winform开发笔记(一)
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • @ResponseBody
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • [2024-06]-[大模型]-[Ollama]- WebUI
  • [Angularjs]asp.net mvc+angularjs+web api单页应用
  • [BZOJ4554][TJOI2016HEOI2016]游戏(匈牙利)
  • [C++]打开新世界的大门之C++入门
  • [CareerCup] 2.1 Remove Duplicates from Unsorted List 移除无序链表中的重复项
  • [CareerCup] 6.1 Find Heavy Bottle 寻找重瓶子
  • [CentOs7]iptables防火墙安装与设置