【发布时间】:2015-11-17 13:00:33
【问题描述】:
当我运行以下代码时:
int i[] = {1,2,3};
int* pointer = i;
cout << i << endl;
char c[] = {'a','b','c','\0'};
char* ptr = c;
cout << ptr << endl;
我得到这个输出:
0x28ff1c
abc
为什么int指针返回的是地址,而char指针返回的是数组的实际内容?
【问题讨论】:
-
因为 cout 的工作原理。 cout 将 ptr 识别为
char *,cout 将其视为以空字符结尾的字符串,因此打印出内容而不是指针地址。将 ptr 转换为unsigned int或uintptr_t也可以查看地址... -
另一个非常有用的答案,
operator <<的所有重载ostream:stackoverflow.com/a/10869485/3982001