这是我快速浏览K&R“ The C Programming Language,第二版”的结果。
第1章“教程简介”:
- 1.1“ Hello world”-0个全局变量
- 1.2“华氏度” — 0个全球变量
- 1.3“ For循环”-0个全局变量
- 1.4“符号常量”-0个全局变量
- 1.5“字符,行,单词计数” — 0个全局变量
- 1.6“数组”-0个全局变量
- 1.7“功能” — 0个全局变量
- 1.8个“参数” — 0个全局变量
- 1.9“字符数组”-0个全局变量
- 1.10“外部变量和范围”-§1.9的代码改编版中的3个全局变量,其中等效函数不使用全局变量
第2章-类型,运算符和表达式
- 2.1-2.12 — 1个明确的全局变量,以及可以是局部或全局的数字。
第3章-控制流
第4章-功能和程序结构
- 4.1“功能基础” — 1个全局变量
- 4.2“函数返回非整数” — 0个全局变量
- 4.3“外部变量”-4个全局变量
- 4.4“范围规则” — 1对全局变量,重复了几次(从4.3开始重复)
- 4.5“头文件” — 0个全局变量
- 4.6“静态变量” — 2个文件范围
static
变量(再次从4.3重复)。
- 4.7“寄存器变量”-0个全局变量
- 4.8“块结构” — 2个全局变量(以使局部变量隐藏全局变量)
- 4.9“初始化”-绝对为0; 5个可以是全球或本地
- 4.10“递归” — 0个全局变量
- 4.11“预处理器”-0个全局变量
第5章-指针和数组
- 5.1“指针和地址”-绝对为0; 3个可以是全局或本地
- 5.2“指针和参数” — 0个全局变量
- 5.3“指针和数组” —绝对为0; 2个可以是全局或本地
- 5.4“地址算术” — 2个文件范围
static
- 5.5“字符指针和函数” — 0绝对是全局的; 2个可以是全局或本地
- 5.6“指针数组和指向指针的指针”-1个全局
- 5.7“多维数组”-1个全局
- 5.8“初始化”-0个全局变量
- 5.9“指针与多维数组” —绝对为0; 4个可以是全局或本地
- 5.10“命令行参数”-0个全局变量
- 5.11“函数指针” — 1个全局变量
- 5.12“复杂的声明” — 5个全局变量
第6章-结构
- 6.1“结构基础” — 0绝对是全局的;有些可能是全球性或本地性
- 6.2“结构和功能” — 0绝对是全局的;有些可能是全球性或本地性
- 6.3“结构数组”-1个全局值; 2个可以是全局或本地
- 6.4“结构的指针”-0个全局变量
- 6.5“自指代结构”-0个全局变量
- 6.6“表查找”-1个全局
- 6.7“ Typedef” — 0绝对是全局的;有些可能是全球性或本地性
- 6.8“联盟” — 0绝对是全局的; 1个可以是全局或本地
- 6.9“位域”-0个全局变量
第7章-输入和输出
- 7.1“标准输入和输出”-0个全局变量
- 7.2“格式化输出-printf” — 0个全局变量
- 7.3“可变长参数列表” — 0个全局变量
- 7.4“格式化输入-scanf” — 0绝对是全局值;有些可能是全球性或本地性
- 7.5“文件访问” — 0个全局变量
- 7.6“错误处理-stderr和exit” — 0个全局变量
- 7.7“行输入和输出”-0个全局变量
- 7.8“其他功能” — 0个全局变量; 1个可以是全局或本地
第8章-Unix系统界面
- 8.1“文件描述符”-0个全局变量
- 8.2“低级I / O —读写” — 0个全局变量(3个函数静态变量)
- 8.3“打开,创建,关闭,取消链接” — 0绝对是全局的; 1可能是全球性的,但可能不是全球性的
- 8.4“随机访问” — 0个全局变量
- 8.5“ fopen和getc的示例实现” — 1个全局变量
- 8.6“列出目录” — 0个全局变量
- 8.7“存储分配器” — 2个全局变量
在我看来,这并不是很多全球性问题。实际上,大多数“可能是全局变量或局部变量”都是局部变量,但是上下文还不够大,无法确定。在几乎所有有全局变量的情况下,都有充分的理由使用这些特定的全局变量,尽管毫无疑问,还有其他设计可以避免大多数全局变量。