为何选择C语言
设计特性
- 自顶向下的规划
- 结构化设计
- 模块化设计。
高效
C语言具有汇编语言才有的微调控能力,可以根据具体情况微调程序以获得最大运行速度和最有效的使用内存。不同CPU制造商使用的指令系统和编码格式不同,而高级语言以更抽象的方式描述行为,不受限于特性CPU或者指令集。
- 强大的控制结构
- 快速
- 代码紧凑——程序更小
- 可移植到其他计算机
强大而灵活
面向程序员
满足程序员的需求,可以利用C访问硬件、控制内存中的位。
C实现有大型的库,包含众多有用的C函数。
缺点
C语言使用指针要格外注意。紧凑简洁结合大量运算符,容易写出晦涩难懂的代码,因此C语言会有年度混乱代码大赛(IOCCC, The International Obfuscated C Code Contest).
标准
1.C89(C90)
制定标准的原则:保持C精神。
- 信任程序员
- 不要妨碍程序员做要做的事
- 保持语言精炼简单
- 只提供一种方法执行一项操作。
应该针对目标计算机来定义最合适的某特定操作,而不是强加一个抽象、统一的定义。
2.C99
1994年发布,用意不是在C语言中添加新特性,而是为了达到新目标。 - 支持国际化编程,提供多种方法处理国际字符集。
- 调整现有实践致力于解决明显的缺陷。
- 为适应科学和工程项目中的关键数值计算,提高C的适应性。
同时尽量于C90、C++兼容,让语言在概念上保持简单。
3.C11
2011年发布,提出新的指导原则。出于对编程安全的担忧,不那么强调“信任程序员”目标了。
使用C语言的7个步骤
1.定义程序的目标
- 明确自己想做什么?
- 程序需要哪些信息?要进行哪些计算和控制?需要报告什么信息?
这一步不设计具体的计算机语言,应该用一般的术语来描述问题。
2.设计程序 - 考虑如何用程序来完成目标?
- 界面是怎样的?
- 如何组织程序?
- 目标用户是谁?
- 准备花多长时间来完成这个程序?
- 如何表示数据,用什么方法处理数据?等等
再次强调应该用一般术语来描述问题,而不是具体代码。
3.编写代码
根据设计编码实现。
4.编译
5.运行程序
6.测试和调试程序
7.维护和修改程序
编程并非是一个线性的过程,有时需要在不同的步骤之间往复。可能会在编码的时候发现设计不切实际,或者会想到更好的解决方案。也可能是在程序运行之后想要改变原来的设计思路。所以需要养成添加注释的习惯。
第1步和第2步一定要形成书面的形式,事先定义和设计是很费时间的,但是不能省略。
编译机制
- C语言编写程序,得到source code file,基本上扩展名为c。
- 用程序将source code file转换为可执行文件,典型的C实现通过编译和连接两个步骤来完成。编译器将源代码转换成中间代码,中间文件有很多形式,最普遍的一种是将源代码转换为机器语言代码。链接器把中间代码和其他代码合并生成可执行程文件,将目标代码、系统的标准启动代码和库代码合并成一个可执行文件。