对内存资源存放位置的限定
1. auto
默认值---分配的内存都是可读可写的区域
auto int a;
区域如果出现 {} 我们认为在栈空间
2. register
register int a; 限制变量定义在寄存器上的修饰符
定义快速访问的变量,放在寄存器内计算速度更快!
编译器会尽量的安排CPU的寄存器去寄存这个变量a,如果寄存器不足时,变量a还是会被放在存储器中。
内存(存储器) 寄存器
3. static
静态
应用场景:
修饰3种数据
(1) 函数内部的变量 (修饰局部变量)
int fun()
{
int a ; =====>>static int a; //会改变该变量的生存期,static局部变量只被初始化一次,下一次调用依上一次的结果值
}
(2) 函数外部的变量(修饰全局变量)
int a;===========>> static int a; //会限制全局变量的使用范围,他的作用域就是定义他的源文件,其他源文件无法调用
int fun()
{
}
(3) 函数的修饰符(工程中用的较多) //会改变这个函数的使用范围,其他文件不能调用这个static函数
int fun(); =====》static int fun();
https://blog.csdn.net/qq_37858386/article/details/79064900
4.const 只读变量的定义
只读的变量,不允许再次赋值。const修饰的变量(全局或局部)生命周期是程序的整个运行过程。
这时候会疑惑const和define的区别,两个生命周期都是程序运行过程,但是我们可以初步理解区别在于define宏定义的是常量,可以被修改;但是const修饰的是只读变量,不可修改。
const int a = 100;
http://c.biancheng.net/view/217.html
5.extern
6. volatile
告知编译器编译方法的关键字,不优化编译