? ? ? ?第一章主要介绍了有关C语言的历史和特性、编写程序的步骤、编译器和链接器的一些知识、C标准。
目录
1. 设计特性
C语言的设计理念让用户可以完成自顶向下的规划、结构化编程和模块化设计,更易懂、可靠。
2. 高效性
C语言程序相对更加紧凑,运行速度快。具有汇编语言具有的微调控制能力,可根据具体情况微调程序以获得最大运行速度或最有效的使用内存。
3.可移植性
在一种系统中编写的C程序稍作修改或不修改就能在其他系统运行,如需修改,也只需简单更改主程序头文件中的少许项即可。
(注意:程序中针对特殊硬件设备(如,显示监视器)或操作系统特殊功能(如,Windows 8或OS X)编写的部分,通常是不可移植的。
4. 强大而灵活
C语言应用广泛(UNIX操作系统、其他语言的编译器、物理学和工程学问题、电影的动画特效)
5. 面向程序员
(1)程序员可以利用C访问硬件、操控内存中的位
(2)丰富的运算符让程序员可以简洁表达自己的意图
(3)虽没Pasal严谨,但比C++限制多;处理简洁,但可能会犯莫名其妙的错误
(4)拥有大型库提供有用的C函数,用于处理程序员经常需要解决的问题
1. 指针的存在让编程的错误难以察觉
2. 大量的运算符导致晦涩代码的产生?
1. 计算机中存储的都是数字,计算机以数字形式存储数字和字符
2. 计算机程序最终必须以数字指令(机器语言)来表示
编译器:将高级语言程序翻译成机器语言指令集的程序。
注:不同CPU制造商使用的指令系统和编码格式不同,但找到与特定类型CPU匹配的编译器就可以将高级语言程序转换为不同类型CPU使用的机器语言程序。故,高级语言是以更抽象的方法描述行为,不受限于特定CPU或指令集。
1989年,ANSI/ISO C标准发布,别称C89;
保持C的精神:
1994年,ANSI/ISO联合委员会开始修订C标准,C99问世。
不是在C语言中添加新特性,而是为了达到新的目标
? ? ?(1)支持国际化编程
? ? ?(2)调整现有实践致力于解决明显缺陷
? ? ?(3)为适应科学和工程项目中的关键数值计算,提高C的适应性,让C比FORTRAN更有竞争力
2011年,发布C11标准,不那么强调“信任程序员”目标,修订是为了跟进新的技术。
使用一般术语而不是具体代码来描述问题
例如:
#include<stdio.h>
int main(){
int dogs;
printf("How many dogs do you have?\n");
scanf("%d",&dogs);
printf("So you have %d dog(s)!\n",dogs);
return 0;
}
编译器将源代码转换成可执行代码。
若编译器发现错误,就不生成可执行文件并报错。
源代码——.c结尾,例如buget.c,对于文件名,不同OS要求不同
编译器——将源代码转换成可执行代码。
链接器——将目标代码、系统的标准启动代码和库代码合并成可执行文件
目标文件和可执行文件都由机器语言指令组成。
目标文件只包含编译器翻译你的代码的机器语言;可执行文件还包含了程序中使用的库函数和启动代码的机器代码。
在编辑时注意,UNIX系统区分大小写,buget.c和BUGET.c和Buget.c是三个不同但都有效的C源文件名。但是.C是无效的。
编译命令:假设对于inform.c
cc inform.c
利用ls命令列出文件,会发现a.out文件,是包含已翻译程序的可执行文件,运行该文件:
?
a.out
一旦链接器生成了完整的可执行程序,会删除目标代码文件inform.o。若原始程序有多个源代码文件,则保留目标代码文件。
有关GNU编译器集合和LLVM项目: