最近我将开始学习C语言,并且我将持续更新我学习过程中的一些学习笔记,给同样正在学习C这门语言的友友们提供一个参考,下面是我看完《C Primer Plus》这本书第一章内容所做的学习笔记,希望对各位友友们有帮助!
丹尼斯·里奇和肯汤?普逊在开发UNIX操作系统时设计了c语言。
里奇是在B语言(汤姆逊发明)的基础上进行设计的。
c融合了计算机科学理论和实践的控制特性
设计理念让用户能轻松地完成自顶向下的规划、结构化编程和模块化设计
C语言具有通常是汇编语言才具有的微调控制能力,可以根据具体情况微调程序
以获得最大运行速度或最有效地使用内存
汇编语言是为特殊的中央处理单元设计的一系列内部指令,使用助记符来表示
不同的CPU系列使用不同的汇编语言
在一种系统中编写的C程序稍作修改就能在其它系统中运行
注意:程序中针对特殊硬件设备(如显示监视器)或操作系统特殊功能
(如Windows 8或OS X)编写的部分通常是不可移植的
C语言使用指针,而涉及指针的编程错误往往难以察觉
C语言紧凑简洁,结合了大量的运算符,可编写出让人费解的代码
C语言已成为嵌入式系统编程的流行语言
C++ 在C语言的基础上嫁接了面向对象编程工具(面向对象编程是一门哲学,它通过对语言建模来适应问题,
而不是对问题建模以适应语言)
CPU的工作是从内存中获取并执行一条指令,然后再从内存获取并执行下一条指令,诸如此类
CPU有自己的小工作区——由若干个寄存器组成,每个寄存器都可以储存一个数字
一个寄存器储存下一条指令的内存地址,CPU使用该地址来获取和更新下一条指令。在获取指令后,
CPU在另一个寄存器中储存该指令,并更新第1个寄存器储存下一条指令的地址
CPU能理解的指令有限(这些指令的集合叫做指令集),且这些指令相当具体,其中许多指令都是用于
请求计算机把一个数字从一个位置移动到另一个位置。如从内存移到寄存器。
1.从内存位置2000上把一个数字拷贝到寄存器1
2.从内存位置2004上把另一个数字拷贝到寄存器2
3.把寄存器2中的内容与寄存器1中的内容相加,把结果储存到寄存器1中
4.把寄存器1中的内容拷贝到内存位置2008
注意:必须用数字码表示上面的步骤
使用高级编程语言,可以在更加抽象的层面表达你的想法,不用考虑CPU在完成任务时具体需要哪些步骤
编译器是把高级语言程序翻译成计算机能理解的机器语言指令集的程序
不同CPU制造商使用的指令系统和编码格式不同,但可找到与之特定类型CPU匹配的编译器
使用合适的编译器或编译器集,便可把一种高级语言程序转换成供各种不同类型CPU使用的机器语言程序
C语言发展之初,并没有所谓的C标准
1978,布莱恩·柯林汉和丹尼斯·里奇合著的 The C Programming Language(《C语言程序设计》)第1版是
公认的C标准,通常称之为K&R C或经典C
由于缺乏官方标准,UNIX实现提供的库已成为了标准库
1989,美国国家标准协会(ANSI)公布了一套新标准,该标准(ANSI C)定义了C语言和C标准库。国际标
准化组织于1990年采用了这套C标准(ISO C)。ANSI C和 ISO C是完全相同的标准。ANSI/ISO标准的最终
版本通常叫做C89 或C90.
1994,ANSI/ISO联合委员会开始修订C标准,最终发布C99标准
2011,发布C11标准
C编译器负责把C代码翻译成特定的机器语言,还将源代码与C库的代码合并成最终的程序(更精确
地说,应该是由一个被称为链接器的程序来链接库函数,在大多数系统中,编译器运行链接器)
用C语言编写程序时,编写的内容被储存在文本文件中,该文件被称为源代码文件(文件名以.c结尾)
编译器把源代码转换为机器语言代码,并把结果放在目标代码文件,简称目标文件(虽然目标文件中包含机
器语言代码,但是并不能直接运行该文件,因为目标文件储存的是编译器翻译的源代码,并不是一个完整的
程序,目标代码文件还缺失启动代码和库函数,启动代码充当着程序和操作系统之间的接口。)
链接器将编写的目标代码、系统的标准启动代码和库代码这3部分合并成一个文件,即可执行文件。对于库
代码,链接器只会把程序中要用到的库函数代码提取出来。
以上就是我看完《C Primer Plus》这本书第一章内容之后的学习总结,如果有写得不对的地方,希望各位大佬指正并多多包涵!