博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
restrict
阅读量:2342 次
发布时间:2019-05-10

本文共 580 字,大约阅读时间需要 1 分钟。

restrict是c99引入的,它只可以用于限定指针,并表明指针是访问一个数据对象的唯一且初始的方式.

 

  考虑下面的例子:

  int ar[10];

  int * restrict restar=(int *)malloc(10*sizeof(int));

  int *par=ar;

  这里说明restar是访问由malloc()分配的内存的唯一且初始的方式。par就不是了。

  那么:

  for(n=0;n<10;n++)

  {

  par[n]+=5;

  restar[n]+=5;

  ar[n]*=2;

  par[n]+=3;

  restar[n]+=3;

  }

  因为restar是访问分配的内存的唯一且初始的方式,那么编译器可以将上述对restar的操作进行优化:

  restar[n]+=8;

  而par并不是访问数组ar的唯一方式,因此并不能进行下面的优化:

  par[n]+=8;

  因为在par[n]+=3前,ar[n]*=2进行了改变。使用了关键字restric,编译器就可以放心地进行优化了。

  这个关键字据说来源于古老的FORTRAN。有兴趣的看看这个。

http://hi.baidu.com/zkheartboy/blog/item/3cc7264edce992c8d0c86aa2.html

转载地址:http://vofvb.baihongyu.com/

你可能感兴趣的文章
为什么Java中没有SortedList?
查看>>
在Go中表示枚举的惯用方法是什么?
查看>>
在React中显示或隐藏元素
查看>>
暂存已删除的文件
查看>>
为什么需要在脚本文件的开头加上#!/ bin / bash?
查看>>
ReactJS-每次调用“ setState”时都会调用渲染吗?
查看>>
如何解决错误:使用nodejs时监听EADDRINUSE?
查看>>
@import vs #import - iOS 7
查看>>
如何使用C#解析JSON?
查看>>
ng-if和ng-show / ng-hide有什么区别
查看>>
用Java复制文件的标准简洁方法?
查看>>
管理webpack中的jQuery插件依赖项
查看>>
删除可能不存在的文件的大多数pythonic方式
查看>>
如何在Eclipse中为Java文本编辑器更改字体大小?
查看>>
我们应该@Override接口的方法实现吗?
查看>>
ng-repeat定义次数而不是重复数组?
查看>>
选择语句以查找某些字段的重复项
查看>>
引导程序中“col-md-4”,“col-xs-1”,“col-lg-2”中数字的含义
查看>>
JavaScript ES6类中的私有属性
查看>>
List vs tuple,何时使用? [重复]
查看>>