链表就是一个结构体 指针指向自身结构体类型
双向链表插入的时候 先改变自身 再改变两边
双向链表删除的时候 先改变两边 再改变自己
逆序一个单向链表
回调函数
指向函数的指针
4链表的遍历回调用法
// 链表的统一遍历的方法
void for_each(struct node *head,void(*fp)(struct node*node))
5数据类型的加强
6 数据类型加强的练习
7预处理步骤和宏函数的陷阱
续行符
预处理器的处理过程:
8函数的do-while(0)用法
在if else中就不行了,会报错
因为else前面是两行表达式了
宏定义上面加{}
这时候可以用了,但是必须把分号去掉
定义宏函数
这样结尾可以写;(分号)
9中午回顾
10宏函数的操作符
11宏函数debug接口的简单封装
12程序中记录日志的标准
13动态库的封装
.dll是windows的动态库
linux下是.so
.dll是最终代码
.lib是告诉编译器dll文件在哪
windows下动态库是一对
linux下是.so
(因为lib文件比较小,先加载进来.. windows的设计
(放在函数前面了)
生成
放到一起
14 调用第三方动态库
.lib和.dll都是二进制文件,看不到源码
连接器,
把.lib文件加进去
15内存检测工具memwatch
(windows不用写D linux要加D
属性 然后添加宏
里面重写了malloc
放到HOME里面这个文件里面
linux下有