C语言的诞生和发展
1972年诞生于贝尔实验室
1972年贝尔实验室的Dennis Ritch和Ken Thompson在开发UNIX操作系统时设计了C语言。是在B语言的基础上进行设计。
C语言的标准化过程-ANSI/ISO标准、C99、C11标准、C17标准
1978年,Brian Kernighan和Dennis Ritchie合著 The C Programming Language第一版。
1983年美国国家标准协会ASNI组件了X3J11委员会。
1989年公布了ASNI C标准,定义了C语言和C标准库。——信任程序员;保持语言精炼简单;只提供一种方法执行一种操作;让程序更快。
1994年,ASNI/ISO联合委员会修订C标准,1999年发布C99标准。——支持国际化编程;调整现有实践致力于解决明显的缺陷;使用科学和工程项目中的关键数值计算
2007年,C语言标准委员会修订C语言,2011年发布C11标准。——加入字节对齐说明符,泛型机制,对多线程支持,静态断言,原子操作,支持Unicode。
2018年,发布C17标准,对C11进行了补充和修正。没有新特性。
预计2022年发布C2X标准
C语言的基本特性
设计特性
C语言的设计理念让用户能秦松地完成自顶向下的规划。结构化编程和模块化设计。
高效性
C程序相对更紧凑,运行速度很快。具有通常汇编语言才具有的微调控制能力,可以根据具体情况微调程序以获得最大运行速度或最有效地使用内存。
可移植性
C是可移植的语言。在一种系统中编写的C程序稍作修改就能在其他系统运行。但程序中针对特殊硬件设备或操作系统特殊功能编写的部分,通常是不可移植的。
强大而灵活
C语言功能强大而灵活。强大是指用途范围广,灵活是指同一个功能可以有许多种实现方法。
面向程序员
C语言是为了满足程序员需求设计的,程序员可以利用C访问内存中的位。有丰富的运算符,能让程序员表达自己的意图。
程序设计语言的分类
机器语言
机器语言是一种计算机能够直接识别和运行的二进制数字指令系统。
计算机能够识别和运行与计算机软硬件平台对应的机器语言,并不能直接识别高级程序设计语言的指令和代码。高级程序设计语言需要通过相应的编译器软件进行编译。
汇编语言
高级程序设计语言
C语言的编程机制
机器语言代码和C语言源代码的关系
C语言编写程序是,编写的内容被存储在文本文件中,该文件被称为源代码;源代码经过编译和链接转换成可执行文件。
C语言源代码经过编译转化成机器语言代码。
C语言源文件的编译
首先将源代码编译成目标代码,目标代码链接组合成可执行程序。
目标代码文件和系统库
目标大妈不是一个完整的可执行文件,其中还缺少库代码和启动代码。
可执行代码(机器语言指令)
对应计算机能识别并执行指令的代码。
应用C开发的基本过程
分析阶段——定义程序目标、设计程序
定义程序目标是指分析实现该目标的基本方法。思考程序需要哪些信息,需要哪些控制和计算,程序需要返回什么信息。
设计程序是指完成目标分析之后进行进一步的细化工作。考虑如何用程序来完成目标,用户界面什么样,如何组织程序,目标用户是谁,工作周期多长。
编码阶段——编写代码、编译、运行程序
编写代码,按照C语言的语法规则进行代码的编写。使用文本编辑器存储源代码。编写过程中要添加文字注释。
编译,调用编译器将C语言的源代码文件编译成可执行程序。编译的细节取决于编程的环境。
运行程序,检测城市是否能够在目标系统上正确运行。
测试和维护阶段——测试和调试程序、维护和修改程序
测试和调试程序。检测程序是否能够获得正常的运算结果。
维护和修改程序,修正代码错误,增强可读性,添加注释,描述设计思路等。
C语言的编译器
Windows系统——MinGW、MS VC
Macintosh(Mac)——LLVM
Linux——GCC