亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

const int *p = a; *p的值為什么還可以變化

int?a?=?3,b?=?5;
const?int?*p?=?&a;
p?=?&b;????//*p?=?b?過不了,因為*p是const
cout<<a<<",?"<<b<<",?"<<endl;
//此時*p本來是常量3,現在變成了5,按理來說應該是不可變的啊


正在回答

6 回答

const int *p;意思是修飾*p變成常量,*p的值不能改變,但是p能改變,也就是說指針指向的地址可以改變,所以

p=&b是正確的,所以現在指針P指向b地址,*p就是b的值,所以變成5;不是意義上的*p直接改變,是指針指向被動改變。這是我的理解,希望能幫助你。

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

const int *p = &a;

*p不可變但是,p的值可以改變,就是指針可以指向其它變量

p = &b;

這時指針指向變量b了,那么*p的值就是b的值是5,

但是如果想用*p修改b的值,就不行




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

* 前 const ,const 修飾 *p,值不可變

* 后 const,const 修飾 p,指針指向不可變

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

const int *p=&a的時候,const修飾的是(*p)就是p指向的那個內容a是不可以通過*p=XXX來改變的,

int *const p=&a 的時候,const修飾p p只能指向a,但是可以通過 *p=XXX,來改變a的值

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

const int *p=&a;

const修飾的是*p,表示*p不可重新賦值,在不改變p的指向的變量的時候即p指向變量a,不能用*p來修改其所指變量a的值,,但是a不是常量,a的值是可以改變的,可以修改a的值,但是由于指針p指向a變量,a變量發生改變,那么指針p所指地址的內容發生改變,希望你能理解,謝謝

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

const *p 所指向的內容是可變的,p=&y正確

* const p 所指向的內容是不可變的,p=&y不正確

0 回復 有任何疑惑可以回復我~
#1

慕的地9298213 提問者

應該是* const p 所指的位置是不可變的吧?和其所指的內容有關系嗎? const *p 所指的內容可變吧。 //我已經迷糊了
2018-07-20 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
C++遠征之離港篇
  • 參與學習       122678    人
  • 解答問題       493    個

C++掃清通往面向對象的最后一道障礙,將所有知識點融會貫通

進入課程

const int *p = a; *p的值為什么還可以變化

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號