目录
1. const:定义常量
2. volatile:易变性修饰
3. restrict(C++非标准)
4. mutable:突破常量性
5. static:静态存储
6. register(已弃用)
分类修正说明
1. const:定义常量
 
含义:变量值不可修改,必须初始化。
 应用场景:常量、函数参数、返回值、成员函数(表示不修改对象状态)。
const int MAX = 100;
// MAX = 200;  // 错误:无法修改常量void print(const int* ptr) 
{  // ptr指向的值不可修改std::cout << *ptr;
}2. volatile:易变性修饰
 
含义:变量可能被外部因素(硬件、多线程)修改,禁止编译器优化。
 应用场景:硬件寄存器、多线程共享变量。
volatile bool sensorTriggered = false;// 假设sensorTriggered可能由中断服务程序修改
while (!sensorTriggered) 
{  // 每次循环都从内存读取值// 等待传感器触发
}3. restrict(C++非标准)
 
含义:指针是访问数据的唯一方式(C99特性,C++需编译器扩展)。
 注意:C++标准不支持,但GCC/Clang支持__restrict。
// 使用GCC扩展
void add(int* __restrict a, int* __restrict b, int n) 
{for (int i=0; i<n; i++) a[i] += b[i];  // 编译器可优化无指针重叠
}4. mutable:突破常量性
 
含义:允许在const成员函数或对象中修改该成员。
 应用场景:缓存、调试计数等。
class Logger{mutable int logCount = 0;  // mutable成员public:void log() const {logCount++;  // 允许在const函数中修改}
};5. static:静态存储
 
含义:
-  函数内:变量生命周期为程序全程,作用域仍局部。 
-  类中:成员属于类而非实例。 
-  文件作用域:变量仅在当前文件可见(C++中更推荐匿名命名空间)。 
// 函数内的static变量
void counter() 
{static int count = 0;  // 只初始化一次count++;std::cout << count << "\n";
}// 类中的static成员
class MyClass 
{public:static int sharedVar;  // 声明
};
int MyClass::sharedVar = 42;  // 定义// 文件作用域的static变量(C++中可用匿名命名空间替代)
namespace 
{int fileLocalVar = 100;  // 内部链接
}6. register(已弃用)
 
含义:建议编译器将变量存入寄存器(现代编译器自动优化,C++17起弃用)。
 示例:
// 传统用法(实际可能被编译器忽略)
void loop() 
{register int i;  // 建议寄存器存储for (i=0; i<10000; i++){// 频繁操作}
}分类修正说明
严格来说,C++中:
-  类型限定符: const、volatile(影响类型属性)。
-  存储类说明符: static、register、mutable(影响存储方式或生命周期)。
-  restrict:C语言特性,C++需依赖编译器扩展。