**c语言的代码是文本写的,当我们点击编译运行的时候本质上在做什么呢 **
**其实是将文本类的代码生成一个二进制可执行程序 **
在编译的时候实际是想将文本代码转可执行程序
可执行程序其实就是一个二进制文件,本质上也是个文件 .exe
1. 在win中 双击的本质运行程序,将程序加载到内存中
2. 任何程序在被运行之前都必须加载到内存中为什么?
因为快
当我没被加载到内存的时候在硬盘中(外设)
在这里插入图片描述
所有的变量本质都是在内存的某个位置开辟空间
因为变量定义前已经在内存中了
为什么要定义变量
总结:因为有些数据不是要立马处理,要过一段时间使用
变量定义的本质
定义:开辟空间的(定义只能一次 )
声明:告知(声明可以多次)
变量声明的本质
a uto最宽宏大量的关键字
局部变量是auto 全局变量不是
**局部变量只在代码块中有效 **
变量的生命周期
时间概念 什么时候被开辟 什么时候被释放
作用域 (影响范围)
局部变量优于全局变量
auto只能用来修饰局部不能全局,在局部变量里可以省略不写
最快关键字 register(寄存器)
存储分歧
局部的,(全局变量可能会导致cpu寄存器长期被占用)需要被高频读取的变量建议定义register。效率高
**举例 放到寄存器里就不需要在内存中开辟,他就没有地址,没有地址就不能取地址 **
**寄存器可以被写入 **