一、概述

和引用一样,指针也可以和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;  // 错误
最后修改:2018 年 12 月 16 日
如果觉得我的文章对你有用,请随意赞赏