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

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

const的地址變化

如題: const int x=3,int *y=&x;

理論上是成立的,因為const只是將X的變成常量無法修改,int *y=&x;只是將X的地址賦給指針Y,實則X的值并沒有改變,可視頻中說是錯誤用法


正在回答

3 回答

確實是錯誤用法,C++信奉一個原則,不管你設計的程序是否涉及到錯誤方法使用,只要存在錯誤,不管用沒用到,就是錯的!我們看你說的例子,x是常變量,不可以修改,如果y是指向x的指針,那么*y也不能修改,*y可以看做是x的引用,畢竟引用本質就是指針啊,也得是常變量,這點沒問題吧,記住這就是編譯器在上述中得到的信息點,接下來聲明指針y,聲明指針y的時候到底要不要表明,*y是const,如果表明,沒問題了,這點沒有疑問吧,如果不標明呢,這個語句int *y=&x意味著什么呢?*y可以修改,是變量,這是C++語法上允許的,但是上面的指出了*y必須常變量才能符合要求,所以如果不聲明,前后矛盾,C++編譯器只能報錯,我們看上面提到的原則,雖然你沒有通過*y修改x的值,但是只要聲明這個變量,提供了這種修改值的方法,就是錯的,沒有理由!

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

weixin_慕慕1405962

那是不是說,對于指向常變量的指針,他自己本身也必須是常變量指針?
2019-01-23 回復 有任何疑惑可以回復我~

你通過x沒法修改了,但是你定義的y還可以修改,你覺得合理嗎

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

六個蒸蛋

不能這么說。比如以下代碼 int x; const int& y=x; 通過 y 沒法修改 y 的值,但可以通過對 x 重新賦值修改 y 的值。這兩條語句是可以通過編譯的。
2019-11-07 回復 有任何疑惑可以回復我~

你說的沒錯

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

舉報

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

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

進入課程

const的地址變化

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

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

幫助反饋 APP下載

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

公眾號

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