Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我从这里了解到数组的名称是数组中第一个元素的地址,所以这对我来说很有意义:
int nbrs[] = {1,2}; cout << nbrs << endl; // Outputs: 0x28ac60
但是,为什么这里返回的是整个 C 字符串而不是 的地址ltrs?
ltrs
char ltrs[] = "foo"; cout << ltrs << endl; // Outputs: foo
因为 iostreams 有一个重载,char *它会打印出指针所指的内容,直到包含\0.
char *
\0
如果要打印地址,void *请先投射。
void *
cout已经operator<<()为 char* 数组重载,因此它输出数组的每个元素,直到它到达一个空字符,而不是输出指针的地址
cout
operator<<()
cout,通常,C++ 流可以以特殊方式处理 C 字符串。cout运算符<<,>>被重载以处理许多不同的事情,这就是其中之一。
<<
>>