学习结构体

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

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

图例:

操作验证:

相关推荐
知识分享小能手5 分钟前
uni-app 入门学习教程,从入门到精通,uni-app 基础知识详解 (2)
前端·javascript·windows·学习·微信小程序·小程序·uni-app
DuHz17 分钟前
C程序中的数组与指针共生关系
linux·c语言·开发语言·嵌入式硬件·算法
来生硬件工程师24 分钟前
【STM32笔记】:P04 断言的使用
c语言·笔记·stm32·单片机·嵌入式硬件·硬件架构·硬件设计
曼城的天空是蓝色的30 分钟前
在环境条件下通过学习基于不同角度的交互信息来实现行人轨迹预测
学习
阳光宅男@李光熠40 分钟前
【质量管理】构建供应链韧性的第一道防线——高风险供应商的识别
笔记·学习
yuuki2332331 小时前
【C语言】文件操作(附源码与图片)
c语言·后端
凉、介1 小时前
ARM 总线技术 —— AMBA 入门
arm开发·笔记·学习
日更嵌入式的打工仔2 小时前
嵌入式入门:APP+BSP+HAL 三层分级架构浅析
笔记·单片机·嵌入式硬件·学习
since �2 小时前
前端转Java,从0到1学习教程
java·前端·学习
OliverH-yishuihan2 小时前
FPGA 入门 3 个月学习计划表
学习·fpga开发