在C語言中,我們經常可以像這樣定義一個變量:
const int a = 100;
這樣的a被定義成了一個常量,在後面的代碼中我們便不能通過a = 200 這樣的方式修改a的值,可是我們可以這樣:
int *p = &a;
然後再這樣:
*p = 200;
最後讀者可以嘗試打印一下a的值:
printf(“a = %d\n”, a);
不用說,打印的結果一定是:a = 200;
其實,對於const int a,我們給它取地址,可以發現a的地址其實是這樣的類型: & const int
而int *p = &a這句中等於把一個 & const int 賦給了 &int,在C語言中,這樣的事情是可以發生的。
在C++中,這樣的語句是不能被編譯通過的,因爲C++的內心是抵觸強轉的:
還有如下這種情況:
因爲malloc出來的內存是 void * 類型,而 p 是int型。
Kyrie Irving___全.
<C++>_C++的類型檢查更嚴格
C++作爲一門面向對象的增強型語言,有着比C語言更爲嚴謹的類型檢查功能 。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.