一、C语言的起源
1972年,贝尔实验室丹尼斯.里奇(Dennis Ritch)和肯.汤普逊(Ken Thompson)在开发UNIX操作系统C语言的设计,是的在B基于语言的设计。
二、选择C语言的原因(优缺点)
- 优点
- 设计特点:结合计算机科学理论与实践的控制特点,C语言设计理念使用户能够更容易地完成自上而下的规划、结构化编程和模块化设计,用C语言编写程序更容易理解和可靠
- 高效性:用C语言编写程序相对更紧凑,运行速度更快
- 可移植性:在系统中使用C稍加修改或不修改语言编写程序,就可以在其他系统中运行
- 强大灵活:C语言应用广泛,即使是C语言编写的程序也可以用来解决物理和工程问题,以及可以用来制作电影的动画特效
- 面向程序员 :C语言是为了满足程序员的需求而设计的。C语言有丰富的操作符,可以让程序员简单地表达他们的意图
- 缺点
- C语言强大而且灵活,可能会犯一些莫名其妙的错误,同时C语言使用指针,而涉及指针的错误往往难以察觉
三、C语言的应用范围
简而言之,C语言是最重要的编程语言,应用广泛
四、计算机能做什么(计算机的工作原理)
- 计算机构件
- 中央处理单位(CPU):承担大部分操作,负责处理程序
- 随机存取内存(RAM):存储程序和文件的工作区
- 永久存储设备:关闭计算机后,以前存储的程序和文件不会丢失 (过去一半指机械硬盘,现在包括固态硬盘)
- 鼠标、键盘等各种外围设备
- CPU的工作原理
从内存中获取并执行一个指令,然后从内存中获得并执行下一个指令,如(吉赫兹)CPU这样的操作一秒钟可以重复10亿次左右)
CPU有自己的工作区——由几个寄存器组成,每个寄存器可以存储一个数字
- 计算机工作原理
如果你想让计算机做某事,你必须提供一个特殊的指令列表(程序),准确地告诉计算机要做什么以及如何做。以及必须使用计算机能够直接理解的语言。
- 特别注意
- 存储在计算机中的所有内容都是数字
- 计算机程序最终必须用数字指令码(机器语言)创建程序
五、高级计算机语言和编译器
- 高级编程语言
- 高级编程语言以各种方式简化了编程工作的原因:
- 不必使用数字码表示指令
- 使用的指令更适合你如何思考这个问题,你可以在更抽象的场景中表达你的想法
- 编译器
对于计算机来说,用高级编程语言编写的指令(高级指令)是一堆无法理解的数据
编译器是将高级编程语言程序翻译成计算机可以理解的机器语言指令集的程序
同时,不同的CPU制造商使用不同类型的指令系统和编码格式用合适的编译器或编译器集,可以将高级编程语言转换为不同类型CPU机器语言编辑程序
六、语言标准
- 第1个ANSI/ISO C标准
美国国家标准协会(ANSI)1983年成立了一个委员会(X3J11),开发了一套新的标准,并于1989年公布,该标准(ANSI C)C语言和C标准库的定义
1990年,国际标准化组织采用了这一标准(ISO C),两者的标准完全相同
这个标准叫C89(1989年)或者C90(1990年),或称之为ANSI C或者ISO C
- C99标准
1994年,ANSI/ISO联合委员会(C9X委员会)开始修改C99标准最终发布C99标准
- C11标准
2007年,标准委员会承诺C标准的下一个标准是C1X,2011年发布了C11标准
七、使用C语言的七个步骤
- 定义程序的目标
- 设计程序
- 编写代码
- 编译
- 运行程序
- 测试和调试程序
- 代码的维护和修改
说明:编程不是像描述的那样线性的过程,而是需要在不同的步骤之间来回
八、编程机制
- 源代码文件
用C语言编写程序时,编写的内容杯存储在文本文件中,称为源代码文件
文件名应满足特定计算机操作系统的特殊要求
- 目标代码文件、可执行文件和库
- C编程的基本策略是将源代码文件转换为可执行文件
编译器将源代码文件转换为中间代码,链接器将中间代码与其他代码合并,生成可执行文件
C语言使用这种方法来模块化程序,可以独立编译单个模块,然后使用链接器合并已编译的模块
这样,如果只更改一个模块,则无需重新编译其他模块
此外,链接器还将您编写的程序与预编译的库代码相结合
- 可执行文件:其中包含可直接执行的机器语言代码
- 目标代码文件:是一种普遍形式的中间文件,即把源代码转换为机器语言代码,并把结果放在目标文件中
因为目标文件中存储的是编译器翻译的源代码,其中缺失启动代码(启动代码充当着程序和操作系统中间的接口)和库函数,还不是一个完整的代码,所以并不能直接运行该文件
- 链接器:是将经过编译的目标代码和系统的标准启动代码和库代码合并成为一个可执行文件
一、C语言的起源
1972年,贝尔实验室的丹尼斯.里奇(Dennis Ritch)和肯.汤普逊(Ken Thompson)在开发UNIX操作系统时设计了C语言,是在B语言的基础上进行设计的。
二、选择C语言的理由(优缺点)
- 优点
- 设计特性:融合了计算机科学理论和实践的控制特性,C语言的设计理念可以让用户能更加轻松地完成自顶向下的规划、结构化编程和模块化设计,用C语言编写的程序更加易懂更加可靠
- 高效性:用C语言编写的程序相对更加紧凑,运行速度更加快速
- 可移植性:在一种系统中用C语言编写的程序稍作修改或者不修改就能够在其他系统中运行
- 强大且灵活:C语言的应用范围广泛,甚至用C语言编写的程序可以用于解决物理学和工程学的问题,以及可以用于制作电影的动画特效
- 面向程序员 :C语言是为了满足程序员的需求而设计的。C语言有丰富的运算符,可以让程序员简洁地表达自己的意图
- 缺点
- C语言强大而且灵活,可能会犯一些莫名其妙的错误,同时C语言使用指针,而涉及指针的错误往往难以察觉
三、C语言的应用范围
简而言之,C语言是最重要的编程语言,应用范围广泛
四、计算机能做什么(计算机的工作原理)
- 计算机的构成部件
- 中央处理单元(CPU):承担大部分的运算工作,负责处理程序
- 随机存取内存(RAM):储存程序和文件的工作区
- 永久内存存储设备:在关闭计算机后,也不会丢失之前存储的程序和文件 (过去一半指的是机械硬盘,现在还包括固态硬盘)
- 各种外围设备:鼠标、键盘等
- CPU的工作原理
从内存中获取并执行一条指令,然后再从内存中获取并执行下一条指令,诸如此类(一个吉赫兹的CPU一秒钟可以重复这样的操作大约10亿次)
CPU有自己的工作区——由若干个寄存器组成,每个寄存器可以存储一个数字
- 计算机工作原理
如果希望计算机做某些事情,就必须为其提供特殊的指令列表(程序),确切地告诉计算机要做的事情以及如何做。以及必须使用计算机能直接明白的语言。
- 特别注意
- 存储在计算机中的所有内容都是数字
- 计算机的程序最终必须以数字指令码(机器语言)创建程序
五、高级计算机语言和编译器
- 高级编程语言
- 高级编程语言以多种方式简化了编程工作的原因:
- 不必使用数字码表示指令
- 使用的指令更加贴切你如何想这个问题,可以在更加抽想的场面表达你的想法
- 编译器
对于计算机而言,使用高级编程语言编写的指令(高级指令)就是一堆无法理解的数据
编译器就是把高级编程语言程序翻译成为计算机可以理解的机器语言指令集的程序
同时,不同的CPU制造厂商使用的指令系统和编码格式不同,使用合适的编译器或者编译器集,便可以把一种高级编程语言转换成共各种不同类型CPU使用的机器语言编辑程序
六、语言标准
- 第1个ANSI/ISO C标准
美国国家标准协会(ANSI)于1983年组建了一个委员会(X3J11),开发了一套新的标准,并于1989年公布,该标准(ANSI C)定义了C语言和C标准库
国际标准化组织于1990年采用这套标准(ISO C),两者是完全相同的标准
该标准称之为C89(1989年)或者C90(1990年),又或者称之为ANSI C或者ISO C
- C99标准
1994年,ANSI/ISO联合委员会(C9X委员会)开始修订C99标准,最终发布了C99标准
- C11标准
标准委员会在2007年承诺C标准的下一个标准是C1X,2011年发布了C11标准
七、使用C语言的七个步骤
- 定义程序的目标
- 设计程序
- 编写代码
- 编译
- 运行程序
- 测试和调试程序
- 维护和修改代码
说明:编程并不是像描述的那样是一个线性过程,又是需要在不同的步骤之间往复
八、编程机制
- 源代码文件
用C语言编写程序时,编写的内容杯存储在文本文件中,该文件被称为源代码文件
文件名应该满足特定计算机操作系统的特殊要求
- 目标代码文件、可执行文件和库
- C编程的基本策略是,用程序把源代码文件转换为可执行文件
编译器把源代码文件转换为中间代码,链接器把中间代码和其他代码合并,生成可执行文件
C语言使用这种方法方便对程序进行模块化,可以独立编译单独的模块稍后再用链接器合并已经编译的模块
通过这种方式,如果只更改某个模块,不必因此重新编译其他模块
另外,链接器还将你编写的程序与预编译的库代码合并
- 可执行文件:其中包含可直接执行的机器语言代码
- 目标代码文件:是一种普遍形式的中间文件,即把源代码转换为机器语言代码,并把结果放在目标文件中
因为目标文件中存储的是编译器翻译的源代码,其中缺失启动代码(启动代码充当着程序和操作系统中间的接口)和库函数,还不是一个完整的代码,所以并不能直接运行该文件
- 链接器:是将经过编译的目标代码和系统的标准启动代码和库代码合并成为一个可执行文件