1

我从这里了解到数组的名称是数组中第一个元素的地址,所以这对我来说很有意义:

int nbrs[] = {1,2};
cout << nbrs << endl;   // Outputs: 0x28ac60

但是,为什么这里返回的是整个 C 字符串而不是 的地址ltrs

char ltrs[] = "foo";
cout << ltrs << endl;   // Outputs: foo
4

3 回答 3

8

因为 iostreams 有一个重载,char *它会打印出指针所指的内容,直到包含\0.

如果要打印地址,void *请先投射。

于 2012-08-03T22:18:30.570 回答
4

cout已经operator<<()为 char* 数组重载,因此它输出数组的每个元素,直到它到达一个空字符,而不是输出指针的地址

于 2012-08-03T22:18:52.683 回答
2

cout,通常,C++ 流可以以特殊方式处理 C 字符串。cout运算符<<>>被重载以处理许多不同的事情,这就是其中之一。

于 2012-08-03T22:18:41.873 回答