前置

📔 [大一秋冬] C小程 琐碎知识点整理
我个人认为《C大程》和《C小程》最明显的区别在于《C大程》开始以工程为编写目标,体现在多文件多模块的常态化。所以在此之前你需要了解单文件单模块的一些知识,才能进一步理解《C大程》中的一些知识点和工程规范。
此外,《C大程》或许更侧重一些抽象的,思维、规范上的内容,而《C小程》更侧重语法。所以有些东西即使是在《C大程》才重点涉及的语法知识我也会放到《C小程》的文档中。


想不出标题的放这里

一个 C 的多模块项目一般包括若干匹配的.h.c文件。
从封装的角度来理解,.h文件是对外开放的接口声明.c则是整个模块真正的内容所在。在编译链接过程中,为了防止出现重复声明,我们一般用如下形式来使该接口文件只被加载一次:

  1. #ifndef __MY_LIB_NAME__
  2. #define __MY_LIB_NAME__
  3. // Your codes are supposed to be here.
  4. #endif
  • 比起传结构体,我们更倾向于传内存更小的结构体的指针,否则在进入函数的时候,结构体会被 copy 而且我们无法在函数里更改原结构体的内容。

  • 结构体的定义中无法设置初始值。

image.png

static关键字的内容可以看

  • 静态变量与静态函数无法被其他模块调用

抽象数据结构

queue / 队列

  • FIFO: First In First Out
  • c’tor() / d’tor() / enqueue() / dequeue() / length()

stack / 栈

  • LIFO: Last In Fisrt Out
  • c’tor() / isEmpty() / push() / pop()

(single/doubly) linked list / (单/双)链表

  • 与数组对比的优劣
  • 注意内存管理

递归

recursion / 递归

Recursive solution have the same form as the original problem.

image.png

函数指针

  • 函数指针
  • 函数指针数组

事件驱动与回调函数

libgraphics的使用说明中有


其他资源

:::info