[英]Is " const wchar_t* " a pointer? [duplicate]
通常当我们写:
int a = 10;
int* ptr = &a;
std::cout << *ptr;
代码 output 是:
> 10
但是当我写这个时:
const wchar_t* str = L"This is a simple text!";
std::wcout << str << std::endl;
std::wcout << &str << std::endl;
代码 output 是:
> This is a simple text!
> 012FFC0C
所以这让我很困惑。
L"This is a simple text "
是一个类型为const wchar_t[23]
的数组,包含所有字符串字符和一个以 0 结尾的字符。 Arrays 可能会衰减,在这种情况下,它们会变成指向数组中第一个元素的指针,这就是发生在
const wchar_t* str = L"This is a simple text!";
std::wout
可以与<<
运算符一起使用,该运算符将这样的 null 终止字符作为第二个操作数; 此运算符打印字符串。
第二个打印只是打印指针的地址,因为<<
运算符处理const wchar_t**
类型的参数与任意指针类型不同(除了在第一个打印中看到的某些特定指针类型)没有重载。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.