当我运行以下代码时:
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指针返回数组的实际内容?
答案 0 :(得分:6)
这是由于<<
运算符过载造成的。对于char *
,它将其解释为空终止的C字符串。对于int
指针,您只需获取地址。
答案 1 :(得分:1)
答案 2 :(得分:1)
指向char
的指针与字符串文字的类型相同。因此,为简单起见,cout
将打印char数组的内容,就好像它是一个字符串一样。所以当你这样做时:
cout << "Some text" << endl;
它不会打印地址,就像您的代码一样。
如果您想修改地址,请将其转换为size_t
cout << reinterpret_cast<size_t>(ptr) << endl;