文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>const,volatile用法

const,volatile用法

时间:2010-08-16  来源:huazaicola

 

const,volatile,

Const修饰的对象:变量,函数的参数和返回值,函数本身。

作用:

(1)可以定义const常量         例如:
             const int i=100;

在另一连接文件中引用const常量
         extern const int i;     //正确的引用

extern const int j=10;  //错误!常量不可以被再次赋值

(2)便于进行类型检查            例如:
             void f(const int i) { .........}
        编译器就会知道i是一个常量,不允许修改;
 (3)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。
        还是上面的例子,如果在函数体内修改了i,编译器就会报错;
        例如: 
             void f(const int i) { i=10;//error! }

(4)可以节省空间,避免不必要的内存分配。
         例如:
              #define PI 3.14159         file://常量宏
              const doulbe  Pi=3.14159;  file://此时并未将Pi放入ROM中
              ......
              double i=Pi;               file://此时为Pi分配内存,以后不再分配!

(5) 提高了效率。
           编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。

用法:

(1)       修饰变量 const int a = 1  或 int const a = 1 (两种一样)

(2)       修饰函数参数

如果函数的输入参数采用指针,用const修饰,防止意外修改指针指向内存单元,起保护作用。

       如果参数采用值传递,当函数内多次使用其初值,加const,可防止代码无意中修改。

如:void fun(const int value),

(3)修饰函数的返回值:
        const修饰符也可以修饰函数的返回值,是返回值不可被改变,格式如下:
            const int Fun1(); 

 

Volatile 的使用

将变量定义为volatile表示告诉编译器该变量可能会被意想不到的改变,则优化器每次用到该值都重新从内存读取它。例如:

       volatile int *temp;

       int a1,a2;

       temp = (unsigned int *)0x0040;

       a1 = *temp;

       a2 = *temp;

volatile用在如下的几个地方:
1、中断服务程序中修改的供其它程序检测的变量需要加volatile;
2、多任务环境下各任务间共享的标志应该加volatile;
3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;

 

如果一个变量的值可能会被程序操作之外的其它操作所改变,那么你必需用volatile 声明。在嵌入式系统中其它操作是:中断服务程序的操作、硬件动作的操作。

用volatile声明的变量是不会被编译器优化掉的,如:

volatile unsigned char PortA       @0x0000;

在嵌入式设备的所有外围器件寄存器都声明为volatile

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载