outline
- 链表、文件操作
- 课程项目:学生管理系统
- 内存相关知识
- 扩展阅读
链表、文件
- 链表:增删改查
– 链表创建:头插,尾插(队列),有序插(B+树)
– 动态分配内存:malloc(),calloc()
– 注意:对于指针的传值调用与传引用调用
– 习题
- 文件
– FILE类型
– 习题:统计文章的单词数,行数,字符数,不重复单词数,词频
学生管理系统
- 主要链表和文件操作
– 链表:学生信息的查找、修改等操作用链表的增删改查操作完成
– 文件:资源文件中导入config文件(存放学生信息文件地址),通过命令行参数argv[0]获得config文件地址。
代码还为完成(瓦坑)
内存相关知识
- [C程序]内存分配方式
– 系统区:程序代码,操作系统
– 全局区(静态区)(static):全局变量,常数
– 堆区(heap):指针,动态分配的内存
– 栈区(stack):局部变量
区别
系统区和堆区的内存地址从低地址开始增长。栈区内存地址从高地址向低地址增长,先定义的局部变量地址反而大于后定义的局部变量。其中:
系统区是从0000h地址开始,用户无法访问的一块连续的空间。
用malloc()动态分配的内存空间位于堆区,malloc函数返回一个指向该堆区空间的指针,因为是由用户申请,所以必须由用户用free()释放该空间。
全局变量存放全局变量,宏定义的常量等。它的特点是初始化只能进行一次,例如:static类别变量(全区变量默认为static类别)只能进行一次初始化(例子见笔记)。定义char*p=”hello”,其中的p为字符常量,不可再次被赋值。
[参考]
1.http://blog.csdn.net/youoran/article/details/10990815
2.http://blog.csdn.net/lovecodeless/article/details/21084513
扩展阅读:STL中的vector
- vector 是stl中第一个容器,可以容纳不同数据类型的变量,可以动态分配空间并自动回收的机制,相当于一个方便用户使用的动态数组。
- 实现可以参考《stl源码剖析》(填坑)
[参考]
1.http://www.cplusplus.com/reference/vector/vector/?kw=vector
2.http://blog.csdn.net/phoebin/article/details/3864590