深入刨析关键字
C程序
#include<stdio.h>
int main(){
printf("hello world");
return 0;
}
声明与定义
什么是变量(是什么)
在内存中开辟特定大小的空间,用来保存数据
如何定义变量(怎么用)
int x = 10;
char c = ‘a’;
double d = 3.14;
这个都会
为什么要定义变量(为什么)
计算机,因名知义,它就是用来计算的呀,而计算就必须得有数据啊,而在某一时间段不是全部的数据都用的到,如同:要吃饭,不是所有的饭菜都要立马被你吃掉。饭要一口一口吃,那么你还没有吃到的饭菜,就需要暂时放在盘子里。 这里的盘子,就如同变量,饭菜如同变量里面的数据。被用到的就是计算,没用到的数据就放在变量中暂存
变量的本质
我们现在已知:
- 程序运行,需要加载到内存中
- 程序计算,需要使用变量
那么,定义变量的本质:在内存中开辟一块空间,用来保存数据。(为何一定是内存:因为定义变量,也是程序逻辑的一部分,程序已经被加载到内存)
变量声明的本质:
比喻你和一女的表白,而且人家同意了,就是叫定义变量,你可以使用它,洗衣服做饭,而声明就是一个词“官宣”,发个朋友圈,证明一下他是女朋友
定义只能1次
声明可以多次 这就是属于秀恩爱范畴了
auto
变量的分类
局部变量:包含在代码块中的变量叫做局部变量。局部变量具有临时性。进入代码块,自动形成局部变量,退出代码块自动释放。
全局变量:在所有函数外定义的变量,叫做全局变量。全局变量具有全局性。
代码块:用{}括起来的区域,就叫做代码块
变量的作用域
作用域概念:指的是该变量的可以被正常访问的代码区域
局部变量,只在本代码块有效
全局变量整个程序的运行期间都有效
还有一点如果全局变量和局部变量同名时,局部变量优先使用
变量的生命周期
**生命周期概念:指的是该变量从定义到被释放的时间范围,所谓的释放,指的是曾经开辟的空间”被释放“ 局部变量: 进入代码块,形成局部变量[开辟空间],退出代码块,"释放"局部变量
全局变量: 定义完成之后,程序运行的整个生命周期内,该变量一直都有效
**
作用域与生命周期
auto 相关
如何使用:
一般在代码块中定义的变量,即局部变量,默认都是auto修饰的,不过一般省略 默认的所有变量都是auto吗?不是,一般用来修饰局部变量
中断一下:后面我们所到的,局部变量,自动变量,临时变量,都是一回事。我们统称局部变量
register
其实,CPU主要是负责进行计算的硬件单元,但是为了方便运算,一般第一步需要先把数据从内存读取到CPU内,那 么也就需要CPU具有一定的数据临时存储能力。注意:CPU并不是当前要计算了,才把特定数据读到CPU里面,那样太慢了
register修饰变量
尽量将所修饰变量,放入CPU寄存区中,从而达到提高效率的目的
register修饰什么样的变量呢
1.局部的(全局会导致CPU寄存器被长时间占用)
2. 不会被写入的(写入就需要写回内存,后续还要读取检测的话,register的意义在哪呢?)
3. 高频被读取的(提高效率所在)
4. 如果要使用,请不要大量使用,因为寄存器数量有限
register 不能&地址