那些犯过的错误
编译错误与运行错误
- 编译错误
- 多为语法错误
- 运行错误
- 逻辑上的错误
- 包括没有定义变量
关于变量的存储与生命周期
- 全局变量和静态变量放在全局区,也称静态区,不放在堆区或栈区,故不会引起堆栈溢出
- 设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题,因为他们都放在静态数据存储区,全局可见
- 函数中必须要使用static变量情况:比如当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针
- 动态全局变量、静态全局变量、静态局部变量 生命周期均从定义起到程序结束
- 作用域 小范围原则
- 对于只在一个函数中访问的全局变量,可以把它改为静态局部变量或局部变量,以降低模块间的耦合
编译预处理
- 宏替换
- 文件包含
- 文件由双引号括起来
-
- 现在源程序所在目录搜索,再按系统设定的标准方式搜索
- 条件编译
-
- #ifdef #ifndef #if
关于链表
- 结点记得申请内存
神坑的时间复杂度
- 是数据规模的函数
- 若采用二分查找法查找一
- 比较之后放在最后(即不移动,在原位
- 移动次数 <= (n-1)*n/2
-
- 即每次拿出一个放在第一个,已排好的序列全部移位
选择排序
- 每次从待排序列中挑最值
那些容易混淆的东西
指针数组与数组指针
-
指针数组是数组
-
- 数组中的元素是指针
- 数组中存的是地址
-
数组指针是指针
-
- char (*colorp)[5]; colorp是一个指针,它指向一个有5个元素的数 组,每个元素的类型都是字符型
-
常见错误原因:注意检查所指向数组元素个数是否一致
- 注意是否误讲数组指针看作数组,用的时候就是朴素的指针(元素一维数组)或二级指针用法(元素)