The C Programming Language——前言

1988年,美国国家标准协会(ANSI)为C语言指定了一个精确的标准(即ANSI C)。该标准保持了C的表达能力效率小规模以及对机器的最终控制,同时也保持了符合该标准的程序的可移植性。ANSI C相较于之间的版本,具体描述了结构赋值枚举和一种的新的函数声明和定义方式。新的函数声明和定义方式允许在使用过程中对函数的定义进行交叉检查。同时ANSI C为C语言定义了标准库,该标准库说明了C语言本身没有明晰的某些特性的行为,同时还明确了C语言中与具体机器相关的一些特性。

附录A是一个参考手册,是对ANSI C标准进行了概述,是为了帮助程序员更好的理解语言本身(其本身并不能起到标准的作用)。附录B是对标准库提供的功能进行了总结。附录C是对ANSI C标准相较于之前的版本所做的变更进行了小结。

C语言是一种通用的程序设计语言。它同UNIX之间具有非常密切的联系——C语言是在UNIX系统上开发的,或者说为了改写UNIX而创造了C语言。由于C语言很适合用来编写编译器操作系统,因此被称为“系统编程语言”。

C语言提供的基本类型包括字符整型浮点型,同时还有非基本类型指针数组结构体联合体。而且这些类型之间可以进行派生操作

表达式是由运算符(operator)和操作数(operand)组成的。任何一个表达式都可以是一个语句。指针提供了与具体机器无关的地址算术运算。

终止测试在顶部的循环(while、for),终止测试在底部的循环(do)。

函数可返回基本类型结构体联合体或指针类型的值不包括数组)。任何函数都可以递归调用

函数定义可以不是嵌套的,但可以用块结构的方式声明变量。

一个C语言程序的不同函数可以出现在多个单独编译的不同的源文件中。变量可以只在函数内部有效,也可以在函数外部但仅在一个源文件中有效,还可以在整个程序中都有效。

编译的预处理阶段将对程序文本进行宏替换包含其他源文件以及进行条件编译

C语言本身不提供直接处理诸如字符串集合列表数组复合对象的操作。除了由函数的局部变量提供的静态定义和堆栈外,C语言本身没有定义任何存储器分配工具,也不提供堆和无用的内存回收工具

C语言本身只提供简单的单线程控制流。C语言的多线程控制要通过调用库函数或操作系统的系统调用来实现

ANSI C相较于之前版本最重要的变化是函数声明和定义的新语法。现在,函数的声明中可以包含描述函数实际参数的信息;相应的,定义的语法也做了改变。这个特性使得编译器很容易检测到因参数不匹配而导致的错误。

ANSI C标准库与UNIX系统的“标准I/O库”很相似。其实ANSI C标准库的实现与具体的操作系统有很大的关联。

由于大多数计算机本身就直接支持C语言提供的数据类型和控制结构,因此只需要一个很小的运行时库就可以实现自包含程序

ANSI C标准明确地提出了可移植性问题,并预设了一个常量的集合,借以描述运行程序的机器的特性。

ANSI C的类型检查机制已经得到了加强。ANSI C标准要求对变量进行正确的声明显式的强制类型转换(针对于不兼容的数据类型之间的转换,类型提升除外)。

标准库提供了一个与操作系统交互的公共接口。该函数库是由ANSI C定义的,这就意味着所有支持C语言的机器都会支持它。因此,使用该库执行输入、输出或其他访问操作系统的操作的程序可以不加修改的运行在不同的机器上。

猜你喜欢

转载自blog.csdn.net/weixin_39918693/article/details/80341948