C 中強制變換之const cast

2021-06-21 10:45:20 字數 727 閱讀 9611

今天學習了一下c++中的強制轉換,看了const_cast,我發現了這個轉換關鍵字的奇怪之處,於是把它記錄一下,廢話不說,先看乙個程式:

1 #include 2

3using

namespace

std;45

intmain()

6

以上程式列印的結果:

一開始 *pval 和val的值都是5,因為他們指向同一位址。

但是後來我通過給(*pval)賦值,是的指標pval所指向的記憶體位址為10,然後列印去而發現val 還是等於 5 而*pval卻等於10,這是很矛盾的啊,按理講他們是記憶體中同一塊位址中的內容,應該完全一樣啊,我很不解,於是我看了一下記憶體:

以上圖中的位址就是val的記憶體位址,但是通過上面的圖可以看到,0012ff44位址處的值為 0000000a(16進製制,4個位元組) = 10 (十進位制)。

發現在輸出val值得過程中,編譯器直接將5賦值給val,而不是工記憶體中讀取。這就解釋了為什麼指向記憶體中同乙個位址,輸出的值卻不同!

C 強制轉換之static cast

static cast 用法 static cast expression 簡介 該運算子把expression轉換為type id型別,但沒有執行時型別檢查來保證轉換的安全性。主要有以下幾種用法 1.用於類層次結構中基類和派生類之間指標或引用的轉換 進行上行轉換是安全的,進行下行轉換時是不安全的 ...

C 基礎之強制轉換

目錄 c風格型別轉換 c 型別轉換 1.static cast 型別轉換 2.const cast 修改const屬性 例 3.dynamic cast 基類和派生類間的轉換 4.reinterpret cast 任意指標 引用型別轉換 不安全 型別轉換有c風格的,當然還有c 風格的。c風格的轉換的...

C 中型別強制轉換

c 中有4種強制轉換 const cast,static cast,dynamic cast,reinterpret cast,以下將分別介紹 1.const cast 形式const cast expression 用來修改型別的const或volatile屬性,除了const或volatile修...