1. restrict
表明两个指针不是指向同一个数据,便于编译器优化
int fun(int *a,int *b) { *a = 5; *b = 6; return *a+*b; }
如果a和b指向同一个地方,则返回12
int fun(int *restrict a,int *restrict b) { *a = 5; *b = 6; return *a+*b; }
a和b不会指向同一块数据
2. volatile
表明变量能被其他程序修改,对这个变量取值时直接从内存加载而不是优化后从寄存器里获取
原文:https://www.cnblogs.com/taoXiang/p/12491605.html