《C程序设计语言》笔记 (零) 序及引言

C语言最早是由Dennis Ritchie于1973年设计并实现的,其初衷是作为UNIX系统的编程语言。

《The C Programming Language》一书1978年出版第一版。

1983年,美国国家标准协会(ANSI)成立了一个委员会,其目标是制定"一个无歧义性的且与具体机器无关的以语言定义",而同时又要保持C语言原有的"精神",产生了C语言的ANSI标准

C语言是一种通用的语言。它同UNIX系统之间具有非常密切的联系--C语言是在UNIX系统上是开发的,并且,无论是UNIX还是其上运行的大部分程序,都是用C语言编写的。但是,C语言并不受限于任何一种操作系统或机器。由于它很适合用来编写编译器和操作系统,因此被称为"系统编程语言",但它同样适合于编写不同领域中的大多数程序 。

C语言的很多重要概念来源于BCPL语言。BCPL对C语言的影响间接地来自B语言

BCPL和 B语言都是无类型语言。C语言提供了很多数据类型。其基本类型包括字符、具有多种长度的整形和浮点数等。另外通用指针、数组、结构和联合派生的各种数据类型。

函数可以返回基本类型、结构、联合或指针类型的值。任何函数都可以递归调用。局部变量通常是”自动的“,即在每次函数调用时重新创建。

变量可以只在函数内部有效,也可以在函数外部但仅在一个源文件中有效,还可以在整个程序中都有效。

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

C语言是一种相对”低级“的语言。这种说法并没有什么贬义,它仅仅意味着C语言可以处理大部分计算机能够处理的对象,比如字符、数字和地址。这些对象可以通过具体机器实现的算术运算符和逻辑运算符组合在一起并移动。

C语言不提供直接处理如字符串、集合、列表或数组等复合对象的操作。

虽然可以将整个结构作为一个单元进行拷贝,但C语言没有处理整个数组或字符串的操作。

除了由函数的局部变量提供的静态定义和堆栈外,C语言没有定义任何存储器分配工具,也不提供堆和无用内存回收工具。

最后,C语言本身没有提供输入输出功能,没有read和write语句。也没有内置的文件访问方法。

所有这些高层的机制必须由显式调用的函数提供。C语言的大部分实现已合理的包含了这些函数的标准集合。

类似的,C语言只提供简单的单线程控制流,它不提供多道程序设计、并行操作、同步和协同例程。

ANSI中定义了一个函数库。它描述了诸如访问操作系统、格式化输入输出、内存分配和字符串操作等类似的很多函数。该标准还定义了一系列的标准头文件,它们为访问函数声明和数据类型声明提供了统一的方法。这就确保了使用这个函数库与宿主系统进行交互的程序之间具有兼容的行为。

原文地址:https://www.cnblogs.com/dafume/p/7773644.html