c:
register只能修饰局部变量不能修饰全局变量和函数
作用:尽可能将修饰的变量保存在cpu的寄存器中省去cpu到内存中抓取数据的时间,提高程序运行效率。
频繁访问变量用register修饰。
注意:1,不能用&来获取register所修饰变量
2,register修饰的变量一定是cpu能接受的数据类型
static既能修饰局部变量也能修饰全局变量
c至c++对register的升级:当用&取地址时,将寄存器中的变量加载到内存中再取地址
volatile防止编译器将所修饰的变量加载到寄存器中,进行优化。
c指针最大的缺点:使用不当会造成内存错误(段错误),所以指针操作不安全。
c++引用:引用实际就是给变量起别名,操作这个引用实际就是操作这个变量
一个引用只能绑定一个变量,定义一个引用时一定要给他初始化(绑定一个变量)
引用做函数的形参==指针做函数的形参
引用作为函数返回值,使函数调用可以作为左值
不能反悔局部变量或者局部变量的地址(函数执行结束会释放空间)
引用的分类:左值引用&(只能绑定左值)和右值引用&&(只能绑定右值)
判断左值:能对其取地址或者修改
判断右值:不能取地址或修改
move(将左值转换成右值)
左右值引用的作用:函数的形象,函数返回值
左值引用:代替指针的操作
右值引用:临时对象开销的问题(对象移动)
右值引用的名字任然是左值!
引用是会占用内存的!
C:
const:修饰一个变量(全局,局部),修饰函数返回值
作用,将修饰的变量标记为只读变量(错误:const修饰的变量是常量)
const修饰一个变量必须初始化
工程应用:用const修饰函数形参,保护实参不在函数执行过程中被修改。
C++
const修饰一个变量,这个变量就是常量
指针和引用的赋值操作必须是const对const