《C Primer Plus(第6版)中文版》 第1章 初识C语言

本文是根据《C Primer Plus(第6版)中文版》内容所作笔记,并对标题序号稍加修改。

1.1 C语言的起源

1972年,丹尼斯·里奇和肯·汤普逊在开发UNIX操作系统时设计了C语言。

1.2 选择C语言的理由

1.2.1 设计特性

  • 融合了计算机科学理论和实践的控制特性;
  • 结构化编程与模块化设计;
  • 可靠易懂;

1.2.2 高效性

具有微调控能力,可根据具体情况微调程序以获得最大运行速度或最有效地使用内存。

1.2.3 可移植性

在一种系统中编写的C程序稍作修改或不修改就能在其他系统运行。如需修改,也只需简单更改主程序头文件中的少许项即可。

1.2.4 面向程序员

  • 可以访问硬件、操控内存中的位;
  • 具有丰富的运算符;
  • 拥有大型库;

1.2.5 C语言的优点

  • 强大的控制结构;
  • 快速、可靠、易懂;
  • 代码紧凑、程序更小;
  • 可移植到其他计算机;

1.3 计算机能做什么

1.3.1 计算机的组成

  • 中央处理单元/器(Central Processing Unit,CPU);
  • 随机存取内存(Random Access Memory,RAM);
  • 永久内存存储设备/只读内存(Read-Only Memory,ROM);
  • 输入输出设备;
  • 其他人机交互外设;

1.3.2 CPU的工作原理

CPU承担绝大部分运算工作,它从内存中获取并执行一条指令,然后再从内存中获取并执行下一条指令。CPU由若干寄存器组成。每个寄存器都可以存储一个数字。一个寄存器存储下一条指令的内存地址,CPU使用该地址来获取和更新下一条指令,在获取指令后,CPU在另一个寄存器中存储该指令,并更新第1个寄存器存储下一条指令的地址。计算机以二进制数字形式存储数字和字符,每个指令都有一个数字码。

CPU能理解的指令有限,这些指令的集合称为指令集,这些指令相当具体。

1.3.3 计算机的工作原理

提供特殊的指令列表(程序),用机器语言创建程序,运行程序完成指定的事情或动作。
如果计算机要完成1+2这一加法运算,需要执行以下步骤:

  1. 从内存位置2000上把数值1拷贝到寄存器1中。
  2. 从内存位置2004上把数值2拷贝到寄存器2中。
  3. 把寄存器1和寄存器2的内容相加并将结果存储在寄存器1中。
  4. 把寄存器1中的内容拷贝到内存位置2008。

1.4 高级计算机语言和编译器

  • 编译器是把高级语言程序翻译成计算机能理解的机器语言指令的程序。
  • 使用合适的编译器或编译器集便可把一种高级语言转换成供不同类型CPU使用的机器语言程序。
  • 高级语言以更抽象的方式描述行为,不受限于特定CPU或指令集。

1.5 语言标准

1978年,布莱恩·柯林汉和丹尼斯·里奇合著的《C语言程序设计》第1版是公认的C标准,通常称为K&C经典C

1.5.1 第1个ANSI/ISO C标准

1989年。ANSI公布了ANSI C标准,它定义了C语言和C标准库。1990年,ISO采用ANSI C,因此ISO C即ANSI C,被称为C89C90

1.5.2 C99标准

1999年,ANSI/ISO联合委员会推出C99

1.6 使用C语言的7个步骤

  1. 定义程序目标
  2. 设计程序
  3. 编写代码
  4. 编译
  5. 运行程序
  6. 测试和调试程序

查找并修复错误的过程叫调试(debug)。

  1. 维护和修改代码

1.7 编程机制

1.7.1 文件名

  • 存储用C语言编写的程序内容的文件称为源代码文件(source code file,源文件);
  • C语言源文件以.C 结尾;
  • 文件名 = 基本名.扩展名;

1.7.2 C编程基本策略

用程序把源代码文件转换成可执行文件(其中包含可直接运行的机器语言代码)。

1.7.3 编译器与目标代码

编译器将源代码转换为目标代码,将源代码文件转换为目标代码文件。目标代码即机器语言代码,也成为中间代码。

1.7.4 链接器与可执行文件

目标代码文件缺失启动代码库函数,启动代码充当程序和操作系统的接口,库函数包含许多函数的目标代码。两者都是机器代码。
链接器将目标代码、系统标准启动代码和库代码合并生成可执行文件。链接过程中,链接器只会提取用到的库函数代码。

源代码
编译器
目标代码
链接器
库代码
启动代码
可执行文件

你可能感兴趣的:(C/C++,c语言,编程语言)