zoukankan      html  css  js  c++  java
  • C语言restrict关键字的作用

    间而言之,restrict关键字修饰一个指针,并告诉编译器,它不会和其他指针指向同一个地址,从而让编译器优化代码。

    例如,有如下函数签名:

    int foo(int *a, int *b);
    

    通常,a和b指向不一样的地址,但也是有可能指向一样的地址。那么对于这样的代码:

    int foo(int *a, int *b) 
    {
        *a = 5;
        *b = 6;
    
        int m = *a + *b;
        return m;
    }
    

    m可能是11,也可能是12。

    这时候编译器会确保每次解引用操作都执行,以得到正确的结果。

    如果对指针加上restrict修饰,那么就会告知编译器,这两个地址不会一致,从而提升生成指令的性能。

    但这个不一致性就交给程序员去保证,如果没有遵守这项契约,结果是为定义的。

    也就是

    int foo(int * restrict a, int * restrict b);
    

    这样声明后,程序员需要保证函数调用时,a和b指向不一样的地址。

  • 相关阅读:
    深入理解计算机系统
    Python基础知识点
    贝叶斯分类器
    matplotlib 库的使用
    Linux 学习笔记
    支持向量机
    神经网络
    决策树
    k近邻法的实现
    智能过滤:九眼过滤管应对千变万化
  • 原文地址:https://www.cnblogs.com/demon90s/p/15580190.html
Copyright © 2011-2022 走看看