惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
博客园 - 司徒正美
小众软件
小众软件
H
Help Net Security
博客园 - 聂微东
宝玉的分享
宝玉的分享
Jina AI
Jina AI
酷 壳 – CoolShell
酷 壳 – CoolShell
阮一峰的网络日志
阮一峰的网络日志
M
MIT News - Artificial intelligence
博客园 - 【当耐特】
U
Unit 42
大猫的无限游戏
大猫的无限游戏
Apple Machine Learning Research
Apple Machine Learning Research
S
SegmentFault 最新的问题
腾讯CDC
MongoDB | Blog
MongoDB | Blog
云风的 BLOG
云风的 BLOG
J
Java Code Geeks
I
InfoQ
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Martin Fowler
Martin Fowler
博客园 - 三生石上(FineUI控件)
Vercel News
Vercel News

博客园 - 老金

直接初始化和复制初始化 C++ 内连接与外连接 (转) mysql-Innodb事务隔离级别-repeatable read详解(转) Linux操作系统多线程信号总结 Linux操作系统多线程信号总结(转) 转-C/C++捕获段错误,打印出错的具体位置(精确到哪一行) 使用SMTP 和POP3 协议实现收发邮件(C/C++) (转) C/C++中的日期和时间 time_t与struct tm Unicode(UTF-8, UTF-16)令人混淆的概念 跟着url走一圈(ASP.NET请求底层流转个人总结 二) 跟着url走一圈(ASP.NET请求底层流转个人总结 一) GDB教程详解&打印STL容器 C# 中的"yield"使用 谈谈.Net中的协变和逆变(转) 对象的比较与排序:IComparable和IComparer接口 jsoncpp在linux下的配置 在Ubuntu上安装并C++使用libmemcached C++ Primer 第十六章 模板与范型编程 C++ Primer 第十五章 面向对象编程
关键字restrict简介
老金 · 2013-01-05 · via 博客园 - 老金

c99中新增加了一个类型定义,就是restrict。 restrict的定义是It can be applied only to pointers, and it indicates that a pointer is the sole initial means of accessing a data object. 我不知道确切应该怎么翻译,大意是restrict只对指针有用,它声明一个指针是唯一初始化访问一个数据对象。 比如,按照书上的例子:

int ar[10];
int * restrict restar = (int *) malloc(10 * sizeof(int));
int * par = ar;
for (n = 0; n < 10; n++)
{
par[n] += 5;
restar[n] += 5;
ar[n] *= 2;
par[n] += 3;
restar[n] += 3;
}

restar指针是restrict类型,par指针就不是,因为par即没有初始化也不是唯一访问ar数组的变量。
那么,上面的程序,因为restar是唯一反问数据块的指针,所以编译器可以对它优化为一条语句, restar[n] += 8; /* ok replacement */ 而par就不可以, par[n] += 8; / * gives wrong answer */