zoukankan      html  css  js  c++  java
  • 2015-10-20 关于const和volatile关键字

    今天听的课的内容讲到了const和volatile关键字,笔记整理如下:

    1、const关键字:

    1.1、在C语言中,const修饰的变量是只读的,其本质还是变量。当我们在C代码中试图对一个用const修饰的变量进行写操作时,编译器的错误提示中有以下关键字:

    ...read-only variable...,这也证明了我上述陈述的内容。

    1.2、const修饰的变量会占用内存空间。

    1.3、本质上const只对编译器有用,用于告诉编译器该变量不能作为左值,在运行时无用,仍然可以通过强制类型转换的指针来修改其值。

    1.4、const修饰函数参数时,表示函数体内不希望改变该参数的值,const修饰函数返回值时表示返回值不可改变,多用于返回指针的情形。

    2、volatile关键字:

    2.1、可以理解为“编译器警告指示字”,用于告诉编译器必须每次去内存中去用volatile修饰的变量的值,不要进行优化。

    2.2、该关键字主要用于:修饰可能被多个线程访问的变量,也可以修饰可能被未知因素改变的变量。

    3、思考题:

    3.1、 const和volatile是否可以同时修饰一个变量?

    3.2、 const volatile int i=0;这个时候i具有什么属性?编译器如何处理这个变量?

    ANS:const和volatile是可以同时修饰一个变量的  const只是表示变量只读 不能出现在赋值号左边  防止程序“意外”修改   并且编译器一定会做优化 不会每次去内存取值 这个时候如果外部事件 如中断服务程序 改了这个变量的内存值  那么由于编译器优化就不会出有反应 这样会导致错误 加上volatile就告诉编译器 不要做任何优化  并且每次都去内存取值  而且这个变量不可以当左值使用 .

  • 相关阅读:
    python模块--time模块
    python模块--如何相互调用自己写的模块
    Animating Views Using Scenes and Transitions
    fragment 切换
    android textview 设置text 字体
    android intent 5.1
    android EditView ime
    animation of android (4)
    animation of android (3)
    animation of android (2)
  • 原文地址:https://www.cnblogs.com/wan0807/p/4895185.html
Copyright © 2011-2022 走看看