项目开发日报表
项目名称 | 【苏嵌实训-嵌入式 linux C 第五天】 |
---|---|
今日进度以及任务 | 复习C语言的函数、内存管理、关键字 、复合数据类型 |
本日任务完成情况 | 完成了老师上课布置的任务。 |
本日开发中出现的问题汇总 | 无 |
本日未解决问题 | 无 |
本日开发收获 | 对函数的传参、传值、传地址、static用法有了进一步了解 |
其他 | 无 |
作业
1、free是如何知道释放多大的空间?
答:系统在分配内存时除了分配指定的内存空间外,还有分配用于保存内存空间大小等信息。所以内存释放时不再需要再指定释放多大的内存空间,只需要指定该块内存空间的首地址即可。
2、static在什么样的情况下使用?
答:用static说明的变量是静态变量,也可以理解为全局变量,当所定义的变量中所保存的值在整个程序中不能被其它变量占用该存储空间时使用。
3、为什么要使用typedef给类型重命名?
答:为了让在不同使用环境下让数据类型变得有“具体含义”。
笔记
一、函数-----三要素:函数名、形参、返回值
1、函数名:命名 -->自注释性 动词+名词 add_user del_user
2、函数参数:实参是什么类型,形参就要定义成什么类型;<传数组名>
传一维数组名,用元素的指针;
传二维数组名,用一维数组指针;
传三维数组名,用二维数组指针;
传指针数组名,用指针的指针;
传地址和传值:什么时候好传地址,什么时候传值?
当只使用不修改实参变量的值,传实参变量名;func(实参变量名)
当使用及修改实参变量的值,传实参变量的地址;func(&实参变量名)
传入参数、传出参数<如何让函数返回多个值>
3、函数返回值;return exit
4、华为的编码规范<入口参数检查、函数的异常处理>
函数指针变量:保存函数的入口地址;
函数名作用:指针常量,保存函数的入口地址;
函数指针的作用:做函数形参,实现回调函数;
统一的调用形式:传递不同的函数,指向不同的操作—多态:代码扩展性
二、内存管理
C语言内存管理<内存是稀缺资源>
1、对程序员来说,内存管理应该掌握哪些内容?
数据存放在哪?
2、常见的内存错误:内存泄漏
3、malloc/free
4、内存池;(将使用多次malloc操作改变成只使用1次)
malloc/free是一个开销非常大的操作
三、关键字
register:尽可能的将数据保存到CPU的寄存中;提高执行效率(省去了CPU通过总线从内存中抓取数据的时间)
static修饰局部变量:延长了局部变量的生命周期,程序结束之后再释放;(只执行一次)
static修饰全局变量:静态全局变量,该变量不能在其他文件中访问;
static修饰函数:该函数只能被本文件的函数调用,不能被其他文件访问;
extern:外部声明,告诉编译器这个函数或者变量是在其他文件定义的;
const:修饰变量,该变量成为一个只读变量(值是可以被改变的)
const使用注意事项:修饰某一个变量时,一定要初始化;
const距离谁近就修饰谁;
四、复合数据类型
struct、union、enum
当项目中需要多个整数宏时,就要使用enum;