看到標題你可能笑了,這不是小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;//這樣是不是高大上一點呢?嘿嘿