C++ 修饰符类型

#C-Language

C、C++修饰符类型有:

register

告诉编译器该变量使用频率非常高,建议编译器放到寄存器中以提高读写速度。
但编译器并不一定这样做。

限制:

  • 变量必须是 CPU 接受的类型,单个值,长度小于等于整数的长度
  • 只能使用于局部变量和函数形参,全局register变量是非法的
  • 无论寄存器变量是否存放在寄存器中,它地址都是不能访问的(&运算符)

const

定义常量以方便编译器进行优化,只是在编译期上的语法检查和限制,取地址后仍可更改

初始化方法:

const int num = func(); // 运行时初始化
const int num = n;      // 运行时初始化
const int num = 10;     // 编译时初始化

const修饰方向

TODO.
const修饰的是在它前面的类型,如果它前面没有类型,那它修饰的是紧跟着它的那个类型。

static

静态修饰符,

  • 修饰局部变量:增加了局部变量的生命周期,若定义未初始化,则默认初始化为0
  • 修饰全局变量:缩小了全局变量的作用域,限制在本模块(文件)中访问
  • 修饰函数: 缩小了函数的作用于,限制函数只能被本模块调用

volatile

表示该变量实时性很高,且会被程序以外的因素更改(如外部中断等),要求程序一定从内存中读取而非寄存器中读取。

extren

 extern 常用在变量和函数声明前,用来说明此变量或函数是在别处定义过的,要在此处引用

auto(C++)

要求编译器自行推测变量类型