zoukankan      html  css  js  c++  java
  • 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(对代码量的优化

  • 相关阅读:
    O021、创建 Image
    O020、理解 Glance
    O019、通过例子学习 Keystone
    O018、理解 Keystone 核心概念
    O017、部署DevStack
    O016、搭建实验环境
    O015、OpenStack 架构
    O014、云计算与OpenStack
    O013、动手实践Linux VLAN
    O012、Linux如何实现VLAN
  • 原文地址:https://www.cnblogs.com/dabing0983/p/10574840.html
Copyright © 2011-2022 走看看