C语言-那些值得注意的事

2019春夏-程序设计专题 复盘

Posted by kamzero on 2019-07-16

那些犯过的错误

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

那些容易混淆的东西

指针数组与数组指针
  • 指针数组是数组

    • 数组中的元素是指针
    • 数组中存的是地址
  • 数组指针是指针

    • char (*colorp)[5]; colorp是一个指针,它指向一个有5个元素的数 组,每个元素的类型都是字符型
  • 常见错误原因:注意检查所指向数组元素个数是否一致

    • 注意是否误讲数组指针看作数组,用的时候就是朴素的指针(元素一维数组)或二级指针用法(元素)