CPU : central processing unit
RAM : random access memory
永久内存存储设备: 机械硬盘,固态硬盘
外围设备: 键盘,鼠标,触摸屏,监视器
寄存器
CPU能理解的指令有限,,===》 指令集
指令系统 就是 指令集: cpu能听懂,能执行的所有命令的总和
编译器
编译器集
- 把一种高级语言程序转换成供各种不同类型CPU使用的机器语言程序
不同CPU制造商使用的指令系统和编码格式不同
- 编码格式: 机器码的二进制排列规则,,也就是把一条指令,写成0和1固定的格式,不同CPU厂家,定的01排列规则完全不一样
高级语言: 不受限于特定CPU或指令集
编译和链接:
- 编译器把源代码转换成中间代码
- 链接器把中间代码和其他代码合并,生成可执行文件
可以独立编译单独的模块,稍后再用链接器合并已编译的模块,,链接器还将你编写的程序和预编译的库代码合并
目标文件 : 目标文件中存储的编译器翻译的源代码,,不是一个完整的程序
链接器: 把你写的目标代码,系统的标准启动代码和库代码,合并成一个文件,即可执行文件
对于库代码,,只会把程序用到的库函数代码提取出来
有些系统中,必须分别运行编译程序和链接程序,,而另一些系统中,编译器会自动启动链接器
常量: constant : 程序使用之前已经预先设定好了
变量 : variable
位,字节,,字: 描述计算机数据单元或存储单元的术语
位: 最小的存储单元 bit, ,,存 0或者1,,,,位是计算机内存的基本构建块
字节byte : 常用的计算机存储单位,
字(word) : 设计计算机时,给定的自然存储单位
预处理使用的宏 === 用#define定义的名字
他是给编译器预处理阶段用的,不是给程序运行时用的,本质就是文本替换
宏 macro :
- 用
#define定义的一个名字,预处理阶段会直接替换
// 以后代码里面写PI,预处理时就会直接变成3.1415926#definePI3.1415926缓冲区输入:
为什么要有缓冲区,,,把若干字符作为一个块进行传输比逐个发送这些字符节约时间
游戏就不希望有缓冲区
缓冲区:
- 完全缓冲IO
当前缓冲区被填满时,,才刷新缓冲区,,缓冲区的大小取决于系统,常见的是512字节和4096字节 - 行缓冲IO
出现换行符的时候刷新缓冲区,键盘输入通常是行缓冲输入,所以在按下enter键后才刷新缓冲区
scanf ,,getchar,printf,,都是缓冲输入
c标准规定输入时缓冲的,
getchar()获取值EOF,,EOF是-1