課程
/后端開發(fā)
/C++
/C++遠(yuǎn)征之離港篇
如題: const int x=3,int *y=&x;
理論上是成立的,因為const只是將X的變成常量無法修改,int *y=&x;只是將X的地址賦給指針Y,實則X的值并沒有改變,可視頻中說是錯誤用法
2018-10-19
源自:C++遠(yuǎn)征之離港篇 3-1
正在回答
確實是錯誤用法,C++信奉一個原則,不管你設(shè)計的程序是否涉及到錯誤方法使用,只要存在錯誤,不管用沒用到,就是錯的!我們看你說的例子,x是常變量,不可以修改,如果y是指向x的指針,那么*y也不能修改,*y可以看做是x的引用,畢竟引用本質(zhì)就是指針啊,也得是常變量,這點沒問題吧,記住這就是編譯器在上述中得到的信息點,接下來聲明指針y,聲明指針y的時候到底要不要表明,*y是const,如果表明,沒問題了,這點沒有疑問吧,如果不標(biāo)明呢,這個語句int *y=&x意味著什么呢?*y可以修改,是變量,這是C++語法上允許的,但是上面的指出了*y必須常變量才能符合要求,所以如果不聲明,前后矛盾,C++編譯器只能報錯,我們看上面提到的原則,雖然你沒有通過*y修改x的值,但是只要聲明這個變量,提供了這種修改值的方法,就是錯的,沒有理由!
weixin_慕慕1405962
你通過x沒法修改了,但是你定義的y還可以修改,你覺得合理嗎
六個蒸蛋
你說的沒錯
舉報
C++掃清通往面向?qū)ο蟮淖詈笠坏勒系K,將所有知識點融會貫通
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2018-12-25
確實是錯誤用法,C++信奉一個原則,不管你設(shè)計的程序是否涉及到錯誤方法使用,只要存在錯誤,不管用沒用到,就是錯的!我們看你說的例子,x是常變量,不可以修改,如果y是指向x的指針,那么*y也不能修改,*y可以看做是x的引用,畢竟引用本質(zhì)就是指針啊,也得是常變量,這點沒問題吧,記住這就是編譯器在上述中得到的信息點,接下來聲明指針y,聲明指針y的時候到底要不要表明,*y是const,如果表明,沒問題了,這點沒有疑問吧,如果不標(biāo)明呢,這個語句int *y=&x意味著什么呢?*y可以修改,是變量,這是C++語法上允許的,但是上面的指出了*y必須常變量才能符合要求,所以如果不聲明,前后矛盾,C++編譯器只能報錯,我們看上面提到的原則,雖然你沒有通過*y修改x的值,但是只要聲明這個變量,提供了這種修改值的方法,就是錯的,沒有理由!
2018-12-19
你通過x沒法修改了,但是你定義的y還可以修改,你覺得合理嗎
2018-10-20
你說的沒錯