C++輸出字符型指針指向內存空間的地址

看到標題你可能笑了,這不是小case嗎?

char *p = "This is a string!";
cout<<p<<endl;//搞定了?其實沒有,這個輸出結果就是字符串。至於爲什麼沒搞定,這關係到cout的內部實現,由於鄙人才疏學淺,實在是沒法展開討論。

啊,這樣不對?那加個(取地址符)&不就OK了!

cout<<&p<<endl;//這樣輸出的確實是個地址,但是是p的地址而不是p指向的地址,還不行!

心裏鬱悶了,這個小問題自己以前怎麼沒想到呢,現在還真解決不了。

仔細想一下,地址其實不就是數字嗎,那我把它強轉成long型的不就可以了嗎!

cout<<(long)p<<endl;//這下總算是搞定了,先高興一下

高興得有點早了,這強轉明顯就是C語言的那一套。怎麼辦呢,其實C++裏頁提供了類型轉化的關鍵字static_cast、const_cast、reinterpret_cast、dynamic_cast,具體請自己查閱資料。

cout<<reinterpret_cast<long>(p)<<endl;//這樣是不是高大上一點呢?嘿嘿



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章