static、volatile、const的使用解释

static

1、在函数体内,一个被声明为静态的变量在被调用的过程中维持其值不变。
2、在模块内(函数体外),一个被声明为静态的变量可以被模块内的所有函数访问,但不能被模块外的函数访问,即该变量是一个本地变量。
3、在模块内一个函数被声明为静态函数,该函数可被模块内的函数调用,不可被模块外的函数调用,其使用范围被限制在模块内。
静态变量与全局变量的区别静态变量为局部变量仅限与局部(如函数内)使用,静态变量为全局变量仅限于模块内或者说声明变量的源文件内使用,而非静态全局变量可通过extern声明外部变量被其他模块和源文件使用。

volatile

被定义为volatile的变量可能会被意想不到的改变,这样编译器就不会去假设这个变量的值。更准确的说优化器在用到该变量的时候都会小心的重新读取这个变量的值,而不是使用保存在寄存器中的备份。下面是使用volatile的几种情况:
1、并行设备的硬件寄存器(如:状态寄存器);
2、在中断服务函数中会访问到的非自动变量;
3、多线程应用中被几个任务共享的变量;
:另外一个参数可以是volatile也可以是const,如,只读的状态寄存器,volatile因为它可能被意想不到的改变,const因为程序不应该试图去修改他。
一个指针可以是volatile,如,一个中断服务子程序修改一个指向一个buffer的指针时。

const

首先变量定义为const不能简单理解为“常数”,可接受的简单说法为这个变量为“只读”。
1、“const int a;” 与 "int const a;"作用一样,都定义a是一个常整型数;
2、“const int *a”,a为一个指向常整型数的指针,也就是整型数是不可修改的,指针可以修改;
3、“int *const a”,a为一个指向整数的常指针,也就是指针指向的整数是可修改的,指针不可以修改;
4、“int const * a const”,a为一个指向常整数的常指针,也就是指针指向的整数不可修改,指针不可修改。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值