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

学习结构体

1.定义:

  • 结构体可以理解为自定义的数据类型
  • 是由一批数据组合而成的结构型数据

2.格式

#include <stdio.h>
int main()
{struct 结构体名字{成员1;成员2;……}return 0;
}
struct Teacher
{char name[100];int age;int workAge;
}

结构体:

  • 自定义的数据类型
  • 就是由很多的数据组合成的一个整体
  • 每一个数据,都是结构体的性质

书写的位置:

  • 函数的里面:局部位置,只能在本函数中使用
  • 函数的外面:全局位置,在所有的函数中都可以使用

练习:

另外:函数名如果太长也可以起别名

typedef struct
{成员1;成员2;……
}别名;//这个别名可以很短
使用时可以直接写别名.变量

练习:

3.结构体作为函数参数进行传递

函数中可以传递结构体

会出现两种情况:

  • 传递结构体中的数据值
  • 传递结构体的地址值

ps:如果要在函数中修改stu的值,此时就不要再定义一个新的变量了,直接接收stu的内存地址,通过内存地址(即指针)就可以修改stu中的数据了,指针st里记录的是main函数中stu的内存地址(stu 学生)

4.结构体的嵌套

如果结构体中成员的类型是其他的结构体,就用到了结构体的嵌套

注意:结构体嵌套批量赋值时,里面要再加一个大括号

练习:

5.综合练习

6.结构体内存对齐

  • 确定变量位置:只能放在自己类型整数倍的内存地址上
  • 内存对齐:不管是结构体还是普通变量,都存在内存地址
  • 规则:只能放在自己类型整数倍的内存地址上

比如:int类型的字节数为4,所以要接着放好的空间剩下的往下放在整数倍的位置上,然后依次挨着往下放4个,char类型的字节数为1,放哪都一样,只占一个空间

  • 另外,最开头放的直接从0位置开始放字节数,比如下面的double
  • 注意:

结构体的内存对齐要在上面的规则上加一条:结构体的总大小是最大类型的整数倍(用来确定最后一个数据的补位情况),注意对齐的时候会有一些位置空白,会补上空白字节,但这些不会影响到原来补上的类型的字节数,比如char补上后字节数依然为1

  • 心得:我们会把小的数据类型写在上面,大的写在下面,尽量地节约空间

图例:

操作验证:


文章转载自:

http://yOZfdz61.xkzrt.cn
http://Woz9IfCK.xkzrt.cn
http://Ai6tMsah.xkzrt.cn
http://MQqdjRs9.xkzrt.cn
http://SKxJYWlX.xkzrt.cn
http://XWBGBV9X.xkzrt.cn
http://InsllkAF.xkzrt.cn
http://vYRCH8Vr.xkzrt.cn
http://iGnd4bWh.xkzrt.cn
http://NgBh3hds.xkzrt.cn
http://7dlQFb9l.xkzrt.cn
http://dRHQLUwn.xkzrt.cn
http://LiPHGUz6.xkzrt.cn
http://M3obHg55.xkzrt.cn
http://92Pgfhf9.xkzrt.cn
http://MDbPRZZY.xkzrt.cn
http://319m6il9.xkzrt.cn
http://Hbi4RGea.xkzrt.cn
http://mmAMJ9MM.xkzrt.cn
http://LjPH8mvs.xkzrt.cn
http://XY7sBoRA.xkzrt.cn
http://Lf0IElsi.xkzrt.cn
http://TlZrIgLB.xkzrt.cn
http://L1ooRbwK.xkzrt.cn
http://Y7kpHEST.xkzrt.cn
http://WO3HbxvK.xkzrt.cn
http://lYAEYWNk.xkzrt.cn
http://LfYdAfW9.xkzrt.cn
http://8B96ZBco.xkzrt.cn
http://e25zMQso.xkzrt.cn
http://www.dtcms.com/a/372023.html

相关文章:

  • Docker 容器 OOM:从资源监控到JVM调优的实战记录
  • TypeORM、Sequelize、Hibernate 的优缺点对比:新手常见 SQL 与 ORM 踩坑总结
  • 企业级低代码平台的条件函数系统设计:从复杂到极简的架构演进
  • ICCV-2025 | 中科院自动化所世界模型助力具身导航!NavMorph:连续环境中的视觉语言导航自演化世界模型
  • ChatGPT 协作排查:Node.js 内存泄漏的定位与修复
  • Cannot resolve plugin org.apache.maven.plugins:maven-site-plugin:3.1.0
  • 备战 2025 软考系统架构师
  • RabbitMQ 重试机制 和 TTL
  • 人工智能竞赛提高mAP的方法
  • 深度学习——残差神经网络案例
  • LeetCode 刷题【68. 文本左右对齐】
  • Day23_【机器学习—集成学习(5)—Boosting—XGBoost算法】
  • 基于飞算JavaAI的在线图书借阅平台设计与实现(深度实践版)
  • fps:AI系统
  • 强化学习入门:从零开始实现Dueling DQN
  • 做事总是三分钟热度怎么办
  • 图像形态学
  • C++运算符重载——函数调用运算符 ()
  • 分布式系统——分布式数据库的高扩展性保证
  • C++ 并发编程:异步任务
  • 四、神经网络的学习(中)
  • OPENPPP2 —— IP标准校验和算法深度剖析:从原理到SSE2优化实现
  • 梅花易数:从入门到精通
  • 计算机⽹络及TCP⽹络应⽤程序开发
  • 单点登录1(SSO知识点)
  • 嵌入式学习---(ARM)
  • 嵌入式学习day44-硬件—ARM体系架构
  • 《数据结构全解析:栈(数组实现)》
  • Linux系统资源监控脚本
  • PHP中各种超全局变量使用的过程