• const修饰指针+volatile +restrict


    const这块的难点

    const修饰指针有以下的几种形式 ,不同的形式 它的意义不一样。

    形式1:

    int a=23;

    const int *p=&a; a是int型,&a是int *型的,要把int *型的赋给 const int *型的。涉及到了点类型转换。 

    问 const int *p=&a;这个操作,导致了谁不能被操纵了?!

    这里修饰的是 *p,所以 *p 如果重新赋值是不可以的!!

     *p不能变,但是p是可以变的。

    第二种:

    int const * p 这种情况和 const int *p 是一模一样的,都是修饰 *p。

    第三种:

    int * const p;结果是 *p可以变,p不能变。 

    还是比较容易理解的:

    就看const修饰的是谁,const如果在*p的前面,修饰的就是*p,*p就是常量了,就不能变(也就是不能通过*p重新赋值)。

    const如果放在* 和 p中间了, * const p,修饰的就是p,p就是常量了,就不能重新赋值了。

    第四种:

    如果既想让*p不能变,又想让 p不能变,如何写??!!

    让他俩都被修饰——const int * const p(第一个const修饰了*p,第二个const修饰了p),这时,*p不能变,p也不能变。

    volatile (是对存储位置的优化

     restrict(对代码量的优化

  • 相关阅读:
    单向绑定和双向绑定
    Vue
    事件处理
    网关
    同时加载多个配置集
    Nacos Group方案
    DataID方案
    maven_provided说明
    C#大数据导入-SqlBulkCopy
    https://webyog.com/product/monyog/
  • 原文地址:https://www.cnblogs.com/dabing0983/p/10574840.html
Copyright © 2020-2023  润新知