指针和const的组合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了指针和const的组合相关的知识,希望对你有一定的参考价值。

1.指向常量的指针

格式:const 类型 * 指针名 或者 类型 const * 指针名

这种类型的指针可以获取到变量或者常量的指针,但是不能通过指针去修改被指向的对象的值,同时常量的地址只能赋给指向常量的指针。

例如:

 1 int value = 1;
 2 const int MAX = 100;
 3 
 4 const int * p1;
 5 int * p2;
 6 p1 = &value;//正确,变量地址可以赋给指向常量的指针
 7 p1 = &MAX; //正确
 8 p2 = &MAX;//错误,常量地址只能赋给指向常量的指针
 9 
10 *p1 = 200; //错误,不能通过指针去修改被指向对象的值
11 *p2 = 100;//正确

2.指针常量

格式:类型 * const 指针名

这种指针同普通的常量的意义类似,表明指针的值只能在定义的时候进行初始化,同时定义后不能进行修改,即不能改变指针的指向,但是可以通过指针去间接改变被指向对象的值

例如:

1 int value = 50;
2 
3 int * const p1 = &value;
4 
5 int value_another = 100;
6 p1 = &value_another;//错误,不能改变指针常量的指向
7 
8 *p1 = 200;//正确

3.指向常量的指针常量

格式:const 类型 * const 指针名 或者 类型 const * const 指针名

这种指针是上面两种指针的综合体,指针值只能在定义的时候进行初始化,之后不能修改指针值,同时不能通过指针去修改被指向的对象的值

例如:

1 int var = 1002 const int value = 1003 
4 const int * const p1 = &var;//正确
5 const int * const p2 = &value;//正确
6 
7 p1 = &value;//错误,不能修改指针的指向
8 *p1 = 200; //错误,不能修改被指向对象的值

 

以上是关于指针和const的组合的主要内容,如果未能解决你的问题,请参考以下文章

C++指针常量和常量指针,const修饰函数。

C++指针常量和常量指针,const修饰函数。

C++指针常量和常量指针,const修饰函数。

const_cast 用于引用和指针

共享指针和 const 正确性

对容器中项目的 const-correct 指针访问