学习结构体

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

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

图例:

操作验证:

相关推荐
LDR00611 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
通信小呆呆11 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
H__Rick11 天前
自动对焦学习-3
人工智能·学习·计算机视觉
Daisy Lee11 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale
Luminous.11 天前
C语言--day30
c语言·开发语言
Alsn8611 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
玖玥拾11 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
YM52e11 天前
买菜计算器小应用 - HarmonyOS ArkUI 开发实战-PC版本
学习·华为·harmonyos·鸿蒙·鸿蒙系统
謓泽11 天前
C语言不是语法,是通往机器的地图。
c语言·开发语言
小雨下雨的雨11 天前
HarmonyOS ArkUI训练营入门-组件掌握系列-Animation 动画效果实现-PC版本
学习·华为·harmonyos·鸿蒙