zqr

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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; //错误,不能修改被指向对象的值

 

posted on 2017-08-19 20:23  zqr  阅读(154)  评论(0)    收藏  举报