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

对以下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关键字对指针进行保护,其实这是编程规范中提到的一条,今后应当倡导正确使用。

发布了144 篇原创文章 · 获赞 58 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/qqyuanhao163/article/details/100889447