首页 > 编程语言 > 详细

c++中的const与指针

时间:2017-04-18 13:05:15      阅读:152      评论:0      收藏:0      [点我收藏+]

const修饰符

使用const修饰变量时,该变量的值不可修改,因此需要初始化。

例如 const int s = 0;

此时s为值不可变的变量。

那么基于此,当const修饰指针时的情况有三种:

(1)const int *p;

此时const修饰的是 *p 而非 p,因此,*p的值不可变,而p的值是可变的,所以可不对p进行初始化。

例如,

int s = 0,t = 1;

const int *p;

p = &s;

cout<<*p<<endl;

p = &t;

cout<<*p<<endl;

以上代码输出:

0

1

但此时,无论p指向s或者t,均不能通过 *p 修改p所指向的变量的值,如*p = 2;(这是错误的,因为const修饰了*p,此时*p不可变)

(2)int *const p = &s;

此时*的位置在const的前面,而const直接修饰p,那么p的指向就是固定的,不可变化,因此一定需要初始化。

但此时,仍可通过*p修改p所指向的变量的值。

例如,int s = 0;

int * const p = &s;

cout<<*p<<endl;

*p = 3;

cout<<*p<<endl;

以上代码输出为:

0

3

(3)const int *const p = &s

这种情况下,无论是p还是*p均不可变,因此一定需要初始化。

第三种情况其实是前两种情况的结合体,就不具体分析了。

c++中的const与指针

原文:http://www.cnblogs.com/yangsisi99/p/6726936.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!