c语言中的类型限定词之一const

众所周知,变量是以它类型和存储类表征的。在C90中增加了两个特性:不变性和易变性。这些属性是通过关键字constvolatile声明的,而C99增加了restrict,以方便编译器优化。通过资料的整合和日常的应用,让我们一一来认识这些限定词。

    const:带有const声明的变量,不能通过赋值、增量或减量运算来修改变量的值。下面介绍典型的应用:

(1) 在指针的声明中使用const.

const float *pt;//pt 指向一个常量浮点数值,但pt本身的值是可以改变的,pt可以改变指向的位置,但不能*pt =new_ value不需要初始化;

float const*ptr;//ptr是常量指针,指向的地址固定,但所指向的值可以改变,即可以使用*ptr=new_value需要初始化

constfloat*const pts; // pts 必须总是指向同一个位置,并且所存储位置的值也不能改变,需要初始化

(2)对全局数据使用const 

在全局作用域声明的const是定义该对象的文件的局部变量。此变量只存在于该文件中,不能被其他文件访问(非const变量默认为extern。要使const变量能够在其他文件中访问,必须显示的指定为extern.

注意const修饰的类型与非const之间的转换

1>把一个const对象的地址付给一个普通、非const对象指针也会导致错误.

举例:

 constdouble pi = 1.44;

 double*ptr = π //error :ptr is a plain pointer

 constdouble *cptr = π // ok :cptr is a pointerto const

2>不能使用void *指针保存const对象的地址,而必须使用const void *

const intuniverse=42;

const void*cpv=&universe; //ok,cpv is const

void*pv=&universe; //error,universe is const.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值