簡體   English   中英

帶有 c 樣式字符串的 C++ 指針

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM