《C语言程序设计:现代方法(第2版)(K.N.King 著)》学习笔记一:C语言概述

版权声明:该文章由作者原创,未经许可请勿转载! https://blog.csdn.net/qq_29381145/article/details/82915755

1.1 C语言的历史


1.1.1 起源

  1. C语言是美国贝尔实验室的 Dennis Ritchie、Ken Thompson 等人为开发 UNIX 操作系统而于 1972 年设计的一种计算机编程语言。

1.1.2 标准化

  1. 1978 年,Dennis Ritchie 和 Brian Kernighan 合作编写的世界上第一本关于C语言的书——《The C Programming Language》出版。由于当时没有C语言的正式标准,所以这本书就成为了事实上的标准,被称为“K&R”或者“白皮书”。
  2. 1983年,美国国家标准协会(ANSI)开始推动本国C语言标准的制订。经过多次修订,第一份官方的C语言标准于1988年完成,并在1989年正式通过。1990年,国际标准化组织(ISO)也通过了此项标准。这一C语言标准通常称为“C89”或“C90”。
  3. 1999年,国际标准化组织和国际电工委员会(IEC)发布了C语言的第二个官方标准——C99(也是本书着重介绍的内容)。
  4. 2011年,国际标准化组织和国际电工委员会再次发布新的C语言标准。这个标准被称为“C11”,也是目前最新的C语言标准

1.1.3 基于C的语言

  1. C语言对现代编程语言有着巨大的影响,许多现代编程语言都借鉴了大量C语言的特性,例如C++、Java、C#和Perl等。
  2. 在许多现代编程语言普及的今天,学习C语言的意义:第一,学习C语言有助于更好地理解C++、Java、C#、Perl以及其他基于C的语言的特性,一开始就学习其他语言的程序员往往不能很好地掌握继承自C语言的基本特性;第二,目前仍有许多C语言程序,我们需要读懂并维护这些代码;第三,C语言仍然广泛应用于新软件开发,特别是在内存或处理能力受限的情况下以及需要使用C语言简单特性的地方。

1.2 C语言的优缺点


  1. 一门编程语言的优缺点都源于该语言的最初用途(C语言的最初用途是编写操作系统和其他系统软件)和它自身的基础理论体系。
  2. C语言是一种底层语言。为了适应系统编程的需要,C语言提供了对机器级概念(例如字节和地址)的访问,而这些正是其他编程语言试图隐藏的内容。
  3. C语言是一种小型语言。与其他许多编程语言相比,C语言的特性较少,在很大程度上依赖一个标准函数的“库”(“函数”类似于其他编程语言中描述的“过程”、“子例程”或“方法”)。
  4. C语言是一种包容性语言。C语言假定用户知道自己在做什么,因此它提供了比其他许多语言更广阔的自由度。此外,C语言不像其他语言那样强制进行详细的错误检查。

1.2.1 C语言的优点

  1. 高效。高效性是C语言与生俱来的优点之一。
  2. 可移植。可移植性虽然不是C语言设计之初的主要目标,但还是成为了它的一大优点。当程序需要在多种机型上运行时,常常会使用C语言来编写。
  3. 功能强大。C语言拥有庞大的数据类型和运算符集合,这使得它具有强大的表达能力,往往寥寥几行代码就可以实现许多功能。
  4. 灵活。C语言在其特性使用上的限制非常少。在其他许多语言中认定为非法的操作在C语言中往往是允许的。这个特点可能让某些错误溜掉,但却使编程更加轻松。
  5. 标准库。C语言的标准库包含了大量可以用于输入/输出、字符串处理、存储分配以及其他实用操作的函数。
  6. 与UNIX系统的集成。C语言在与UNIX系统(包括Linux系统)结合方面特别强大。事实上,一些UNIX工具甚至假定用户是了解C语言的。

1.2.2 C语言的缺点

  1. C程序更易隐藏错误。C语言的灵活性使得用它编程出错的概率较高。在用其他语言编程时可以发现的错误,C语言编译器却无法检查到。
  2. C程序可能会难以理解。C语言的许多特性可以用多种方式结合使用,其中一些结合方式尽管编程者心知肚明,但是其他人恐怕难以理解。另外,C语言的简明扼要和灵活性也大大增加了C程序的阅读难度。
  3. C程序可能会难以修改。如果在设计中没有考虑到维护的问题,那么用C语言编写的大型程序将很难修改。C语言缺少像许多现代编程语言中“类”与“包”(用来将大程序分解成许多更容易管理的小模块)的特性。

1.2.3 高效地使用C语言

  1. 学习如何规避C语言的缺陷。可以参考 Andrew Koenig 的《C陷阱与缺陷》一书。
  2. 使用软件工具使程序更加可靠。例如 lint 等软件工具以及其他调试工具。
  3. 利用现有的代码库。获取适当的库既可以大大减少错误,也可以节省相当多的编程工作时间。
  4. 采用一套切合实际的编码规范。精心选择的规范可以使程序更加统一,并且易于阅读和修改。
  5. 避免“投机取巧”和极度复杂的代码。虽然C语言鼓励使用编程技巧,但是千万不要没有节制,因为使用过多的技巧可能会使得程序难以理解。
  6. 紧贴标准。为了程序的可移植性,若非确有必要,最好避免使用不属于C语言官方标准的特性和库函数。

问与答


  1. lint 可以检查出C程序中潜在的错误,尤其是那些被编译器漏掉的错误。
  2. lint 是一个标准的UNIX工具。如果你使用的是UNIX操作系统,那么你将会自动获得 lint。但如果使用的是其他操作系统,则可能没有 lint,需要自行上网下载。
  3. lint 有一个增强版本——splint(Secure Programming Lint)。这一工具包含于许多 Linux 操作系统的发行版。
  4. 许多编译器除了检查错误的功能外,还提供警告(甚至是多级警告)的功能,可以指出程序中可能存在问题的地方。

猜你喜欢

转载自blog.csdn.net/qq_29381145/article/details/82915755