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 */

转载于:https://www.cnblogs.com/kingcat/archive/2013/01/05/2845648.html

关键字restrict简介相关推荐

  1. C语言的关键字restrict,C语言中restrict关键字学习

    简介:程序员 restrict是c99标准引入的,它只能够用于限定和约束指针,并代表指针是访问一个数据对象的惟一且初始的方式.即它告诉编译器,全部修改该指针所指向内存中内容的操做都必须经过该指针来修改 ...

  2. C语言关键字restrict

    简介 关键字restrict只用于限定指针:该关键字用于告知编译器,所有修改该指针所指向内容的操作全部都是基于该指针的,即不存在其他进行修改操作的途径:这样的后果是帮助编译器进行更好的优化,生成更有效 ...

  3. 关键字Restrict

    restrict是c99引入的,关键字restrict只用于限定指针:该关键字用于告知编译器,所有修改该指针所指向内容的操作全部都是基于(baseon)该指针的,即不存在其它进行修改操作的途径.也就是 ...

  4. C语言关键字restrict(linux 中为 “__restrict”)

    C语言关键字restrict(linux 中为 "__restrict") 关键字restrict只可用于指针,表明该指针是访问一个数据对象的惟一且初始的方式. 该关键字的作用是允 ...

  5. 【C++】关键字restrict的作用

    restrict用于限定和约束指针,表示这个指针只访问这块内存的唯一方式,也就是告诉编译器,这块内存中的内容的操作都只会通过这个指针,而不会通过其他变量或者指针. 这个指针有两个作用: 一个是告诉编译 ...

  6. 关键字 - restrict

    说明 restrict是c99标准新增的一个关键字,是一种类型限定符(Type Qualifiers). 作用 程序员通过该关键字告诉编译器,我保证代码中restrict的指针独占其指向的内存,所有访 ...

  7. C语言中关键字restrict的用法(linux 为 __restrict)

    类型限定词restrict 关键字restrict通过允许编译器优化某几种代码增强了计算支持.它只可用于指针,并表明指针是访问一个数据对象的惟一且初始的方式.为了清楚这样做为何有用,我们需要看一些例子 ...

  8. c语言 编译器关键字,C语言关键字 restrict

    restrict是c99标准引入的,它只可以用于限定和约束指针,表明指针是访问一个数据对象的唯一方式.即它告诉编译器,所有修改该指针所指向内存中内容的操作都必须通过该指针来修改,而不能通过其它指针来修 ...

  9. C语言关键字 restrict(一)

    概念: restrict,C语言中的一种类型限定符(Type Qualifiers),用于告诉编译器,对象已经被指针所引用,不能通过除该指针外所有其他直接或间接的方式修改该对象的内容. 渊源: res ...

最新文章

  1. HDU 3466 01背包变形
  2. UntraEdit 语法高亮 (MSSQL)
  3. C++中多态的概念和意义
  4. java如何获得键值_如何在java中取map中的键值 的两种方法
  5. php tp 查数据库数据一条_PHP自学(六)TP框架进行数据库查询
  6. IOS 6 之后 Required background modes
  7. BugkuCTF-MISC题旋转跳跃
  8. 测试用例--因果图、判定表法
  9. 24. Element namespaceURI 属性
  10. Oracle Telnet 1521 失败
  11. 大一c语言要学什么,c语言学习计划
  12. 西门子S7-300PLC采用博途V14编程程序,附带博途WINCC上位机,项目内容甲醛生产线项目,模拟量处理,电机控制等
  13. c语言if语句用法总结,C语言if语句总结.doc
  14. Bilibili弹幕文件参数
  15. PointNet++等3D点云中用到的.cu、.cpp文件的编译的简单理解
  16. 容联AI获AIIA智能客服最高等级认证
  17. Vue源码翻译之渲染逻辑链
  18. 【NOIP2017提高A组集训10.25】摘Galo (树形dp)
  19. 2. 妈呀,Jackson原来是这样写JSON的
  20. 【Python Sympy】将表达式化为关于x的多项式,求出多项式系数

热门文章

  1. 计算机考试前的心情作文,考试时的心情作文(七篇)
  2. linux查看cpu占用最多的进程,Linux下查看占用CPU资源最多的几个进程
  3. 将一个数组拼接成一个指定字符串返回
  4. c语言 增删查 案例,C语言实现单链表的增删查改
  5. 我的世界java版游戏崩溃_我的世界全攻略之-游戏崩溃的解决方法
  6. 学习笔记1-Linux1
  7. Boyer-Moore 投票算法
  8. leetcode258. 各位相加(简单题,但是你不看答案想不出来)
  9. insert函数的修改,
  10. 《Python Cookbook 3rd》笔记(3.1):数字的四舍五入