restrict
// 英文释义
// vt. 限制;约束;限定
// restrict是c99标准引入的,它只可以用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式.即它告诉编译器,所有修改该指针所指向内存中
// 内容的操作都必须通过该指针来修改,而不能通过其它途径(其它变量或指针)来修改;这样做的好处是,能帮助编译器进行更好的优化代码,生成更有效率的汇编代码.
int* restrict pVar;
// 1. 它告诉编译器可以自由地做一些有关优化的假定。
// 2. 告诉用户仅使用满足restrict要求的参数。
const
// 1. const修饰指针时的位置
int* const pVar; // pVar指针是一个常量,但是其所指向的内容可以改变。
const int* pVar; // pVar是一个指向常量的指针
int const* pVar; // pVat是一个指向常量的指针,其含义跟上一个相同,虽然采用了不同的写法
volatile
// 英文释义
// adj. [化学] 挥发性的;不稳定的;爆炸性的;反复无常的
// n. 挥发物;有翅的动物
// A volatile specifier is a hint to a compiler that an object may change its value in ways not specified by the language
// so that aggressive optimizations must be avoided.
// 1. https://www.jb51.net/article/141042.htm
// 2. https://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777432.html