跳到主要内容

C语言程序设计

C语言诞生

C语言诞生于20世纪70年代,由美国贝尔实验室(Bell Labs)的丹尼斯·里奇(Dennis Ritchie)在1972年开发。它是基于B语言的改进版本,而B语言本身是由肯·汤普逊(Ken Thompson)开发的,主要用于早期的UNIX操作系统编写。

C语言的来源背景:

  • Multics和UNIX项目 :在C语言诞生之前,贝尔实验室的研究人员参与了一个名为Multics的大型分时操作系统项目。这个项目在当时显得过于复杂,于是贝尔实验室最终放弃了它,转而开发了更加精简的UNIX操作系统。C语言的开发正是在UNIX项目的背景下展开的。

  • B语言的继承与改进:B语言是由Ken Thompson基于BCPL(Basic Combined Programming Language)设计的,用于开发早期的UNIX系统。然而,B语言的功能有限,尤其是在处理数据类型和结构化编程方面的能力不足。Dennis Ritchie希望通过改进B语言,开发一种更加强大和灵活的编程语言,这就是C语言。

C语言的特点:

  • 低级与高级的平衡:C语言非常接近硬件,具备直接操作内存和处理硬件设备的能力,但同时也具备结构化编程的特性,允许编写更高层次的代码。
  • 跨平台性:C语言最初是为UNIX操作系统编写的,但由于其简洁、高效和通用性,迅速传播到其他平台。
  • 广泛的应用:C语言不仅用于操作系统的开发,还广泛应用于编译器、嵌入式系统、数据库、网络编程等多个领域。

C语言因其效率高、灵活性强而成为了很多其他编程语言(如C++、Java、C#、Objective-C)的基础,至今仍是系统编程领域的重要语言。

C语言版本

C 语言有多个版本,从最早期的标准化到最新的版本,随着每个版本的发布,C 语言引入了新的特性和标准。以下是 C 语言主要的版本及其简要介绍:

1. K&R C (1978)

  • K&R C 指的是由 Kernighan 和 Ritchie 在他们的著作《The C Programming Language》一书中定义的 C 语言。这是最早被广泛使用的 C 语言版本。
  • 这个版本是 C 语言的早期形式,还未被正式标准化。

2. ANSI C (C89/C90)

  • ANSI C 是 1989 年由美国国家标准协会(ANSI)标准化的 C 语言版本,也被称为 C89
  • 1990 年,国际标准化组织(ISO)也采用了这一版本,称为 C90,两者几乎没有区别。
  • 特性
    • 函数原型(函数声明包含参数类型)
    • 标准库函数得到规范化,如 stdio.hstdlib.h 等。
    • 增加了更多的标准库函数来处理字符、字符串、内存分配等。

3. C99 (1999)

  • C99 是 1999 年发布的 C 语言标准,扩展了 ANSI C 并引入了一些现代化特性。
  • 特性
    • 支持单行注释(//
    • 增加了 inline 关键字,用于内联函数。
    • 支持可变长数组(Variable Length Arrays,VLA)。
    • 增加了布尔类型(_Bool)。
    • 更强的浮点数支持(long long int 和新的 complex 类型)。
    • 初始化指定符号字段的结构体。

4. C11 (2011)

  • C11 是 2011 年发布的 C 标准,旨在通过新特性提高 C 语言的并发支持和安全性,同时确保向后兼容性。
  • 特性
    • 原子操作(atomic operations),提升了并发编程的效率。
    • 多线程支持(通过 <threads.h> 标准库引入)。
    • 新增了 _Generic 关键字,用于泛型编程。
    • 改进了对 Unicode 的支持。
    • 支持匿名结构体和联合体。

5. C17 (2017)

  • C17(有时也称为 C18,取决于标准正式发布的时间)是 2017 年发布的一个小幅更新版本。
  • 这个版本没有引入新的语言特性,主要是对 C11 的一些修复和改进,旨在更好地支持编译器实现。

6. C23 (2023)

  • C23 是最新的 C 标准,预计在 2023 年发布。
  • 该版本正在进行讨论和修订,可能引入一些新的特性和功能,重点是进一步简化语言使用并加强类型安全性。

总结

  • K&R C:C 语言的早期版本。
  • C89/C90:首次标准化版本。
  • C99:引入现代特性,如 // 注释、inline 函数等。
  • C11:支持并发和原子操作,添加了多线程库。
  • C17:C11 的修订版本,主要是修复和改进。
  • C23:最新版本,预计将引入更多现代化和安全性功能。

这些版本定义了 C 语言的演进,开发者可以根据需要选择支持不同标准的编译器。

后期我们主要以 C11 版本为主进行讲解和学习

编程实战1990公众号二维码

10年软件开发经验,分享编程零基础入门教学文章视频,小项目从0到1开发迭代升级流程。 分享如何通过技术做出产品源源不断的进行盈利。关于我,学习更多编程知识。