达内LOGO和北京达内网址达内科技培训项目:Java培训 3G培训 Android培训 软件测试培训北京达内服务电话
C++培训
C++培训:类型限定词volatile

限定词volatile
   
    告诉编译器该变量除了可被程序改变以外还可被其他代理改变。
   
    典型地,它被用于硬件地址和其他并行运行的程序共享的数据。
   
    例如,一个地址中可能保存着当前的时钟时间,不管程序做些什么,该地址的值都会随着时间而改变。另一种情况一个地址被用来接收来自其他计算机的信息。
   
    语法:
   
    volatile int locl;       /*locl是一个易变的位置*/
   
    volatile int *proc;    /*ploc指向一个易变的位置*/
   
    这些语句声明了locl是一个volatile值,并且ploc是一个指向volatile值。
   
    作用:可以方便编译器优化,如:
   
    val1 = x;
   
    /*一些不使用x的代码*/
   
    val2 = x;
   
    一个聪明的(优化的)编译器可能注意到你两次使用了x,而没有改变它的值。它将把x临时存储在一个寄存器中。接着,当val2需要x时,可以通过从寄存器而非初始的内存位置中读取该值以节省时间。这个过程被称为缓存(caching)。通常,缓存是一个好的优化方式,但如果在两个语句间其他代理改变了x的话就不是这样了。如果没有规定volatile关键字,编译器将无从得知这种改变是否可能发生。因此,为了安全起见,编译器不使用缓存。那是在ANSI以前的情形。然而现在,如果在生命中没有使用关键字volatile,编译器就可以假定一个值在使用过程中没有被修改,它就试着优化代码。
   
    一个值可以同时是const和volatile.
   
    例如,硬件时钟一般设定为不能由程序改变,这一点使它称为const;但它被程序以外的代理改变,这使它称为volatile.
   
    其声明如下:
   
    volatile const int loc;
   
    const volatile int *proc;
   
    const、volatile的顺序不重要~~

苏州达内

客服系统