c c const實現原理解析

2021-07-28 23:37:22 字數 1032 閱讀 7447

丟擲問題

下列**輸出的結果是什麼?

#include#includeusing namespace std;

int main()

resault:

100

10

講解學習

原理在c++中,被const修飾的變數,可能為其分配儲存空間,也可能不分配儲存空間。

有下面兩種情況,會為這個變數分配儲存空間:

1、當const常量為全域性,並且需要在其它檔案中使用時,(extern)

2、當使用取位址符(&)取const常量的位址時。

如果沒有為這個變數分配空間的情況下,這個變數是不可能被改變的,也就是說,這個變數是實實在在的常量。這種情況下,沒有任何爭議。

解疑下面咱們討**章的一開始舉得例子。

const int a = 10;
變數a=10,a放在了符號表裡面,這個值永遠不會變。當取a的值的時候,就從符號表裡面取,永遠是10.

int *p = (int*)(&a);
定義乙個新的指標變數p,指向變數a的位址。這時,會在棧上為變數a分配乙個新的空間,存放變數a的值。然後用指標p指向這個空間。例如這個記憶體空間的位址是0x00ff00cc。

*p = 100;
把記憶體位址0x00ff00cc空間的值修改為100。

cout << *p << endl;//從記憶體0x00ff00cc中取值,等於100.

cout << a << endl;//從符號表中取值,等於10.

c語言中的const

int main()

在c語言中用const修飾的是常變數,不算真正意義上的常量

不可以直接修改但可以間接修改

SAP BADI 實現原理解析

最近幾天發現這篇文章被單擊的次數比較高,這裡把文件內容再充實一下 本文談得是sap badi 機制背後的一些設計問題,關於如何使用badi 請參考 在sap系統中 badi 相關類的 類圖 如下 下面能過 分析 badi 機制背後的一些設計問題 1.定義指向badi inte ce的referenc...

Ogre陰影實現原理解析

顧名思義,陰影錐陰影其實就是建立乙個椎體。我們以光源位置為起點,和需要產生陰影的物體的外圍輪廓 光源作為參考位置 連線然後無限延伸,這樣就得到了乙個椎體,利用這個椎體做模板測試。我們把面對攝像機為正面的椎體麵先繪製一遍,在相應的模板位置 1 我們把背對攝像機為反面的椎體面再繪製一遍,在相應的模板位置...

耦合實現Spring IOC原理解析

文章結束給大家來個程式設計師笑話 m 首先恭喜守巨集同學找到了自己心儀的工作,入職的事件終於塵埃落定,也算是乙個新的開始吧。和守巨集聊天的時候也說了很多有關工作的事件,暢想了以後美妙的未來,也想到了以後的各種困難。不說別的就是單單在北京住房這一項就夠任何乙個職場上的人忙上好幾年的。英國天氣無常,所以...