“常量指针”和“指针常量”

 

对以下C语言类型声明语句 double * const cptr;的解释正确的是()

A、cptr指向的地址以及地址内的内容均可以改变
B、cptr指向的地址不能改变
C、cptr指向的地址内的内容不能改变
D、cptr指向的地址以及地址内的内容均不能改变

 

正确答案:B
答案解析:

考查C语言语法的“常量指针”和“指针常量”的基本概念。在C语言语法中,使用const 类型限定修饰符把一个对象转换成一个常量(constant),被转换成常量的对象是只读的,程序中任何试图修改它的举动都会在编译期引起错误;

double * const cptr; 这样的表达形式是指针常量——即cptr首先是一个常量,它指向的地址内容不能改变,cptr目前指向的是一个double类型的对象,这个对象的内容是可以修改的;
const double *cptr;这样的表达形式是常量指针——指向常量(const对象)的指针,即cptr指向的对象是常量(即double类型的对象),不能修改他的值; cptr本身不是常量,它可以被修改为指向其他地址;
以上2者结合使用const double * const cptr;则说明cptr首先是一个常量,它指向的地址内容不能改变cptr目前指向的是一个double类型的对象 ;这个对象又是常量,其内容不能被修改;
我们目前的程序中很少使用const关键字对指针进行保护,其实这是编程规范中提到的一条,今后应当倡导正确使用。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值