一、概述
和引用一样,指针也可以和const
组合,它们组合后使得指针不能用于改变其所指对象的值。
const double p1 = 3.14;
double *ptr = &p1; //错误,ptr是一个普通的指针,不能指向常量的地址。
const double *cptr = &p1;
*cptr = 3.14159; //错误,不能修改*cptr的值
const
和指针组合有以下三种方式:
1.1 常量指针
常量指针是一个常指针,指针的数值不能更改,指针可以更改指向。
定义方式为:const int * p = &a;
int num = 100;
int num2 = 200;
const int * p = #
*p = 200; // 错误,不能修改数值
p = &num2; // 能修改指向
1.2 指针常量
指针常量和常量指针相反,它可以修改数值,但是不能修改指向。
定义方式为:int * const p = &a;
int num = 100, num2 = 200;
int * const p = #
p = &num2; //错误,不能修改指向
*p = 100; //能修改数值
1.3 指向常量的指针常量
形如const int * const p = &a;
它集合了上面两点的特性,既不能修改数值,也不能修改地址。
int num = 100, num2 = 200;
const int * const p = #
p = &num2; // 错误,不能修改地址
*p = 1000; // 错误,不能修改数值
二、常量指针指向其他类型对象
和常量引用
不同,常量指针
不能指向其他类型:
double dVal = 3.14;
const int * const pVal = &dVal; // 错误
此处评论已关闭