项目开发日报表
项目名称 | 【苏嵌实训-嵌入式linux C 第7天】 |
---|---|
今日进度以及任务 | 1.今天复习了函数,函数指针,函数指针数组 2.学习了一下关于函数的编码规范 3.学习了内存管理 4.复习了关键字和复合数据类型 |
本日任务完成情况 | 按计划完成任务,写了一些C语言的程序,以及了解了一些常见的内存错误 |
本日开发中出现的问题汇总 | 无 |
本日未解决问题 | 传入参数和传出参数(如何让函数返回多个值)时有点没写明白 |
本日开发收获 | 1.复习了C语言 2.通过 Linux 虚拟地址空间分布图,了解了程序在虚拟内存中的的分布 |
其他 | 无 |
作业
1.free是如何知道要释放多大的空间?
系统在分配内存时除了分配指定的内存空间外,还有分配用于保存内存空间大小等信息。所以内存释放时不再需要再指定释放多大的内存空间,只需要指定该块内存空间的首地址即可。
2.static 在什么样的情况下使用?
static 对栈变量的修饰,可以认为栈变量的生命周期延长到程序执行结束时。一般来说,栈变量的生命周期由OS管理,在退栈的过程中,栈变量的生命也就结束了。但加入static修饰之后,变量已经不再存储在栈中,而是和全局变量一起存储。
static 对全局变量的修饰,可以认为是限制了只能是本文件引用此变量。有的程序是由好多.c文件构成。彼此可以互相引用变量,但加入static修饰之后,只能被本文件中函数引用此变量。
static 对函数的修饰,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用。
3.为什么要使用 typedef 给类型重命名?
为现有类型创建别名,定义易于记忆的类型名。 简化代码。 便于批量修改具体类型,能区分不同场合使用不同数据类型。