为了账号安全,请及时绑定邮箱和手机立即绑定

c++关于const的问题

const int x=3; int *p=&x; 为什么不可以? 还有const int *p=&x; const 对*p起作用 则p的值可以变,即p可以指向其他地址;*p是p所指向地址中的值;既然*p不可以改变,是不是说x的值也不可改变;但是我看我的课件上说的是x的值可以改变。。。。求指导

正在回答

2 回答

const int x=3; int *p=&x; 为什么不可以?  //const把变量x转变为常量3,int*p=&x意思是把指针p指向了X,这个从程序操作上来说x的值不可以变了,但你可以通过改变p的值来改变了x的值

例如;

const int x=3;

int*p=&x;

p=4; //此时就违背了const的作用,可以理解为编译冲突,所以编译器是不允许这样编译的,所以不编译这程序。

const int *p=&x; const 对*p起作用 则p的值可以变,即p可以指向其他地址;*p是p所指向地址中的值;既然*p不可以改变,是不是说x的值也不可改变


const int*p=&x; //固定了*p的值,变为了常量,int*const p这种类型就是把指针p的指向给固定了即只能有一个地址 例如 const int *p=&x,这样就不能再&y了

总结一下就是

const 在*前就是固定*p的值 但可以改变别名和指向别的地址来改变*p

const在*后就是固定指针的指向,即只可以改变所指向的地址的值来变化 *p的值

所以上面的写法你可以通过改变别名x的值,如x=3来改变p 但不可以直接改变 p=6来改变p的值,却可以把const int*p添加别的地址,如const int*p=&y  ,通过改变y或者x的值来影响p因为x,y仍未为变量

0 回复 有任何疑惑可以回复我~

1、第一个问题:因为用const定义了x的值所以说x的值是不可以改变的,然而后面的*p并没有用const定义,所以说*p的值是可以改变的,从而若改变*p的值就间接改变了x的值,这就是const定义之后的x变得毫无意义,也会导致系统出错。(也就是老师说的不能用一个权限大的去接受一个权限小的)

2、第二个问题:此时x是一个变量,是可以改变的。

3 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之离港篇
  • 参与学习       122700    人
  • 解答问题       474    个

C++扫清通往面向对象的最后一道障碍,将所有知识点融会贯通

进入课程

c++关于const的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信