美文网首页
restrict修饰指针

restrict修饰指针

作者: kirai | 来源:发表于2016-11-17 18:23 被阅读0次

    C99中新增加了restrict修饰的指针:
    由restrict修饰的指针是最初唯一对指针所指向的对象进行存取的方法,
    仅当第二个指针基于第一个时,才能对对象进行存取。
    对对象的存取都限定于基于由restrict修饰的指针表达式中。
    由restrict修饰的指针主要用于函数形参,或指向由malloc()分配的内存空间。
    restrict数据类型不改变程序的语义。
    编译器能通过作出restrict修饰的指针是存取对象的唯一方法的假设,更好地优化某些类型的例程。

    restrict是c99标准引入的,它只可以用于限定和约束指针,
    并表明指针是访问一个数据对象的唯一且初始的方式.
    即它告诉编译器,所有修改该指针所指向内存中内容的操作都必须通过该指针来修改,
    而不能通过其它途径(其它变量或指针)来修改;这样做的好处是,
    能帮助编译器进行更好的优化代码,生成更有效率的汇编代码.如
    int *restrict ptr,
    ptr 指向的内存单元只能被 ptr 访问到,任何同样指向这个内存单元的其他指针都是未定义的,
    直白点就是无效指针。
    restrict 的出现是因为 C 语言本身固有的缺陷,
    C 程序员应当主动地规避这个缺陷,而编译器也会很配合地优化你的代码.

    相关文章

      网友评论

          本文标题:restrict修饰指针

          本文链接:https://www.haomeiwen.com/subject/kezdpttx.html