[英]C++ pointer with c-style string
為什么我在 cout 指針時沒有得到地址? 見下面的代碼:code1:
string s1 {"NAME"};
string *p1 {&s1};
cout<<p1;
給出 0x71fcc0,這是有道理的。 但是看看當我使用 cstyle 字符串時會發生什么:
char cstring1 [] {"NAME"};
char *cp2 = &cstring1[0];
cout<<cp2<<endl;
在屏幕上打印 NAME 那么為什么它不打印地址呢?
那么為什么它不打印地址呢?
因為它是一個指向char
的指針。 當插入字符流時,指向字符的指針與其他指針的處理方式不同。
將指向 char 的指針插入字符流時,將生成指向的字符串,而不是地址。 如果指向的字符串不是空終止,則程序的行為是未定義的。
正如其他人指出的那樣, const char*
被視為字符序列,而不是指針。
如果你想打印地址,你可以試試這個:
cout<< static_cast<void*>(cp2) <<endl;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.