學習指針的時候我一直有個疑惑,請看下面的代碼:
#include <iostream>using std::cout;void main(){ int num=5; int *nPtr=# cout<<nPtr;//輸出指針的地址。但是會報錯<<沒有直接輸出int *地址的功能 return ;}
但是,將int 改成char 類型就不會報錯,可以輸出字符串。同樣是指針,這次為何沒有輸出地址(理應輸出指針代表的地址,但是<<并沒有重載地址輸出的功能所以報錯)呢?
#include <iostream>using std::cout;void main(){ char *nPtr="Address"; cout<<nPtr;//輸出字符串Address; return ;}
原來,輸出流運算符<<重載了輸出功能,可以自動判斷類型,int直接輸出,char *就輸出所代表的字符串,如果要輸出地址,必須使用強制類型轉換函數static_cast轉換成十六進制數字,其它類型的指針比如int *double *直接輸出會報錯
#include <iostream>using std::cout;void main(){ char *nPtr=“請問我”; cout<<nPtr<<"下個輸出是指針地址 "<<static_cast<void *>(nPtr);//語句會報錯,不能輸出指針。 return ;}
以上這篇淺析char 指針變量char *=p 這個語句的輸出問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。
新聞熱點
疑難解答
圖片精選