1972年,贝尔实验室在开发UNIX操作系统时发明了C语言
设计特性结构化 ,模块化
高效性程序相对紧凑,运行速度快,更有效的使用内存
可移植性C语言是可移植语言,安装linux时候自带C编译器
强大而灵活许多语言的编译器和解释器都是C语言写的
面向程序员C语言可以访问硬件,操控内存中的位,大多数C都有库,用于程序员要解决的问题
缺点涉及指针的编程错误往往难以让人察觉
应用范围C语言差不多是C++,学习C的知识就等于学习C++,C++是C的超集
C在linux里扮演着极其重要的角色
计算机能做什么中央处理单元 CPU承担大部分运算工作
随机存取内存 RAM 是存储程序和文件的工作区
CPU 指令从内存获取并执行下一条
一个寄存器储存下一条指令的内存的地址,CPU使用地址获取和更新下一条指令
CPU在另一个寄存器中储存该指令,并更新第一个寄存器来储存下一条指令的地址
CPU能理解的指令有限,指令的集合叫做指令集
这些指令相当具体,许多指令都是用于请求计算机把一个数字从一个位置移动到另一个位置,例如从内存移动到寄存器
计算机以数字形式储存数字和字符,字符有对应的数字码,指令也有对应的数字码
计算机要完成两数相加
1.从内存位置2000上把一个数字拷贝到寄存器1
2.从内存位置2004上把另一个数字拷贝到寄存器2
3.把寄存器2的内容和寄存器1相加,结果放到寄存器1中
4.把寄存器1中的内容拷贝到内存位置2008
高级语言和编译器高级语言不必用数字码表示指令
计算机无法理解高级语言,而编译器把高级语言翻译成计算机能理解的机器语言指令集
编译器的优势:不同CPU制造厂商使用的指令系统和编码格式不同,所以可以使用与CPU类型匹配的编译器,可以让高级语言不受限于CPU指令集
C语言标准<
1989年ANSI公布了ANSI C标准 ,该标准定义了C语言和C标准库
1990年国际化标准组织采用了这套标准ISO C 跟ANSI C完全相同
ANSI/ISO标准的最终版本通常叫C89或C90
1994年ANSI/ISO联合委员会最终发布了C99标准,加上了国际字符集(中文....),支持64位CPU等
2011年,发布了C11
使用C语言的七个步骤C语言是编译型语言
1.定义程序的目标
2.设计程序
3.编写代码
4.编译
5.运行程序
6.测试和调试程序
7.维护和修改程序
编写代码#include编程机制int main(void) { int dogs; printf("How many dogs do you have?n"); scanf("%d",&dogs); printf("So you have %d dogs!n",dogs); return 0; }
源文件以.c结尾
经过编译和链接将源代码转换成可执行文件(包含机器码)
方便模块化,编译独立的模块,连接器合并已编译的模块
另外编译器还将编写的代码和预编译的库代码合并
目标代码文件,可执行文件和库最普遍的形式极为把源代码转换为机器码,结果放在目标文件(中间代码),但是不能直接运行
目标文件需要启动代码,启动代码充当程序与操作系统之间的接口,比如windows和linux使用的硬件相同,所以目标代码相同,但是因为系统处理程序的方式不同,所以启动代码也不同
目标代码还需要库函数,所有C都需要C标准库中的函数,比如printf()函数,目标代码并不包含库函数的代码,只包含使用printf()的指令,printf()的真正的库函数代码储存在库文件中
链接器的作用把编写的目标代码(.obj),系统的启动代码和库代码这三部分合并成一个文件即可执行文件(.exe)
对于库代码,链接器只会把用到的库函数代码提取出来
目标文件和可执行文件都是由机器语言指令组成的(0和1)
目标代码只包含源文件翻译来的机器码,可执行文件还包含库函数和启动代码的机器码
有些系统必须分别运行编译程序和链接程序,有些系统编译器会自动链接,只需给出编译命令
集成开发环境(windows)Microsoft Visual Studio新建C++ [win32控制台应用程序],选择空项目,绝大多数C程序都可以作为C++运行.或者创建时将.cpp扩展名换成.c,编译器会使用C语言规则代替C++



