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