C++ cout char* 的問題


問題:

在C++中,為什么char *p="hello world"; cout<<p<<endl;打印出來的是字符串,而不是地址?

回答:

指針p指向字符串常量"hello word",即p中存放該字符串的首地址,c++為了兼容c語言,當cout輸出常量字符串的首地址時實際輸出該字符串(對cout的<<運算符進行了重載,cout<<p被翻譯為輸出p指向的字符串值)。

cout<<(void *)p;則為p的內容,即字符串的地址,而cout<<&p;為指針變量的地址,而非上述字符串的地址。

 

CODE:

    char *p="hello world"; 

    //輸出字符串首地址 方法1
    cout<<(void *)p<<endl;

    //輸出字符串首地址 方法2
    printf("%p\n",p);

    //輸出字符串
    cout<<p<<endl;

    //輸出指針變量的地址,而非字符串地址
    cout<<&p<<endl;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM