1、static
静态存储修饰符:
作用于变量时,使变量只被初始化一次,并且变量生命周期延长至和当前进程一致。
作用于函数时,时函数只在当前文件中可见,调用权限只在当前文件。
2、const
常量类型修饰符:
作用于变量时,使该变量不可被更改。
const int value = 0;
作用于函数的指针类型形参时,使该指针指向的内容不可被更改。
int FunTion(const int *value);
作用于类的成员函数时,使该函数不能修改类的成员变量。
class Base { private: string name; int age; private: void MyPrint()const; };
3、mutable
可变对象修饰符:
作用于类内成员变量时,可以让带有const修饰的函数修改该成员变量。
class Base { private: string name; int age; mutable int printTimes; private: void MyPrint()const; };
4、restrict
限制访问修饰符:
作用于某块内存的指针时,限制这块内存只能通过该指针访问;
char * restrict name = (char *)malloc(256);
例如memcpy可能出现内存重叠问题,例如s1访问长度过长已经达到了s2所指向的内存区域,可能出现问题。
若没有restrict就不会有这个限制。
void * memcpy(void * restrict s1, const void * restrict s2, size_t n); void * memmove(void * s1, const void * s2, size_t n);
5、volatile
易变变量修饰符
作用于变量时,使变量不会被编译优化(相当于告诉编译器此变量可能会被其他的外部因素改变,如硬件或其他线程)
volatile int num = 20;
6、register
寄存器变量修饰符
作用于变量时,期望编译后会吧把该变量放在CPU的寄存器中,以便频繁调用节省时间开销。
void example_function(register int num) { // register 关键字建议编译器将变量 num 存储在寄存器中 // 以提高程序执行速度 // 但是实际上是否会存储在寄存器中由编译器决定 }
标签:const,变量,int,void,修饰符,C++,restrict,类型 From: https://www.cnblogs.com/GREEN-FIEID/p/17816957.html