const 常量_软件特攻队|const常量,不一样的新玩法
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                const 常量_软件特攻队|const常量,不一样的新玩法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                const用于申明變量,放于變量類型之前,表示此變量不可被改變。然而C語言和C++中的const有著不一樣的意義。如下所示:
const int a = 10;int *p = &a;
上面這段代碼在C語言下不會報錯,但是在C++下會提示“無法從const int *轉(zhuǎn)換為int *”,那么如果將C++的&a強行轉(zhuǎn)化為int *看看。
int *p = (int*)&a;成功運行,在后面修改一下*p的值,輸出。
*p = 2;在C語言中輸出值為:
在C++中輸出值為:
如上所示,為什么C語言里修改變量的值能通過指針,C++里面卻行不通?既然修改不了,那么2存在哪里,什么時候進行分配的空間?
總結(jié)
1、在C語言中編譯器會給常量分配內(nèi)存,然而在使用常量時,常量將會被立即數(shù)替換,以此保護常量,防止被破壞性修改。
2、在C++中對于基本類型的常量,編譯器并不會為其分配存儲空間,編譯器會將它放到符號表。在獲取符號常量的地址等操作時,會強迫編譯器為這些常量分配對應(yīng)的存儲空間,因此編譯器會重新在內(nèi)存中創(chuàng)建一個它的拷貝,我們通過地址訪問的就是這個拷貝而非原始的符號常量。
3、C語言的常量往往不能用來確定數(shù)組的大小,但是C++的常量卻是可以用來確定數(shù)組的大小。
歡迎關(guān)注軟件特攻隊!
總結(jié)
以上是生活随笔為你收集整理的const 常量_软件特攻队|const常量,不一样的新玩法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: cad常用字体_2300多种CAD字体免
- 下一篇: C++字符串完全指引之一(Win32 字
