【发布时间】:2016-11-17 17:11:22
【问题描述】:
如
int x[3] = {1, 2, 3, 4};
cout<<x;
将打印出 x 地址。但是如果我选择字符数组,比如
char x[10]="Hello";
它打印出字符串
你好
假设编译器足够聪明,可以理解在 char array 的情况下,打印出地址的意义不大,因此它会打印出字符串,那么我该如何打印 char 数组地址?
考虑一下这个说法
char *ptr = "hello";
为什么这是合法的,指针不应该只存储地址吗?
【问题讨论】:
-
这是因为
operator<<(ostream&,T)有一个T=const char*的重载,它打印完整的字符串而不仅仅是地址(参见例如here) -
你可能想要
cout << static_cast<void *>(x);
标签: c++ arrays string pointers