您的位置:首页 > 其它

C 类型限定符const 和volatile

2013-06-23 13:57 337 查看
C 类型限定符const 和volatile
1、const
通常在声明中,const出现在存储类型之后,数据类型之前。
如:
static const int a=3;//a 是一个静态存储类型的整形常量
由于已经用const限定了a的类型,我们可以对a进行初始化,但以后不能再对a赋值,增量和减量操作。
虽然对使用const对变量作了限制,也不能在另一个声明中用变量描述数组的大小。
错误使用例1:
const int k=3;
int array[k];//错误
因此,由const限定的变量与符号常量是不等价的。
错误使用例2:
由const 限定的变量的地址赋值给非限定的指针。
const int a=7;
int *p=&a;//错误
错误原因:p是一个普通的指向int的指针,随后我们可以在像++*p这样的表达式中使用它,但那将会改变a的值,这与a的常量的概率是相违背的。

正确使用例2:
const int a =7;
const int *p=&a;//p是一个指向int型常量的指针,其初始值是a的地址。

注意:p本身不是常量,我们可以用一些其他的地址向他赋值,但我们不能向*p赋值,不应该修改p指向的对象。

假设我们要使p本身是常量,而不是a,则可以用如下的方式声明完成:
int a;
int *const p=&a;//p是一个指向int的常量指针。此后我们不能向P赋值,但却可以向*p赋值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: