C 语言书

术语表

读代码、看报错时反复出现的词。

术语英文解释
编译compile把 .c 源码翻译成机器能执行的文件(如 a.out / exe)。
预处理preprocess编译前的文本处理:#include 展开、#define 替换、#ifdef 裁剪。
标识符identifier变量名、函数名等合法名字;不能数字开头,不能用关键字。
关键字keyword语言保留字,如 int、if、for、return,不能当变量名。
字面量literal写死的值:10、3.14f、'A'、"hi"。
整数除法integer division两边都是整数时 / 只保留整数部分,7/2 得 3。
短路求值short-circuitA&&B 中 A 假则不算 B;可用来先判合法再解引用。
作用域scope名字有效的范围。函数内变量出了大括号就不存在。
栈stack函数调用与局部变量所在的内存区;返回后自动回收。
传值pass by value函数参数得到的是副本,改形参不影响实参。
传址pass by address把 &x 交给指针参数,函数可改到调用方的变量。
解引用dereference*p 取出 p 指向的那格内容。
空指针NULL pointer不指向任何对象的指针;解引用会崩溃。
越界out of bounds访问 a[n] 或更后,未定义行为,极难调试。
未定义行为UB语言不保证结果:可能碰巧能跑,也可能崩溃。
字符串终止符NUL / \0C 字符串以 \0 结束;strlen 数到它为止。
头文件卫士include guard#ifndef/#define/#endif,防止重复包含。
结构体struct把多个相关字段打包成一个自定义类型。
typedeftypedef给已有类型起短名,如 typedef struct {...} Point;
宏macro#define 的文本替换;无类型检查,复杂逻辑更推荐函数。
随机存取random access数组用下标直接跳到第 i 个,不必从头扫。
线性查找linear search从头到尾一个个比,O(n)。
冒泡排序bubble sort相邻比较交换,把大数往后推;O(n²)。
素数prime大于 1、只能被 1 和自身整除的整数。
文件指针FILE*fopen 返回的句柄;为 NULL 表示打开失败。