C 类型限定符const 和volatile

本文详细解释了C语言中const和volatile的作用、区别及正确的使用方法,包括如何避免常见错误,并通过实例说明如何正确声明和使用这些限定符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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赋值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值