本节课内容简单,仅截图记录
滴水三期
- 一、什么是结构体
- 结构体偏移
- 结构体的定义与赋值
- 结构体类型的参数
- 结构体类型的函数返回
- 二、作业
一、什么是结构体
结构体偏移
结构体的定义与赋值
结构体类型的参数
本质是内存数据的复制,将结构体中在内存存储的数据复制到新的内存中。与海哥教学视频中相比,现阶段的编译器做了较多的优化。
结构体类型的函数返回
rax中存放了一个内存地址,函数赋值时从rax所存储的地址(即rbp+0x10)开始存储数据,一共占用16字节大小,最后返回时,将起始值1的存储地址返回给rax,而rax在Function函数调用前代表了main函数的局部变量地址,即rbp-0x10。
总结就是使用地址来传递参数,而海哥教程里使用内存间相互复制值来传递,可见现阶段的编译器优化了过程。
二、作业
#include <stdio.h>
#include <string.h>struct Point{float x;float y;float z;
};struct Gamer{Point point;int blood;int level;
};void Function0(Gamer gamer){printf("坐标是:%.2f %.2f %.2f\n", gamer.point.x, gamer.point.y, gamer.point.z);printf("血量是:%d\n", gamer.blood);printf("等级是:%d\n", gamer.level);
}void Function1(){Gamer gamer;gamer.point.x = 1.1;gamer.point.y = 1.1;gamer.point.z = 1.1;gamer.blood = 100;gamer.level = 3;Function0(gamer);
}int main(int argc, char* argv[]){Function1();return 0;
}