打印C ++ int指针vs char指针

时间:2015-11-17 13:00:34

标签: c++ string pointers

当我运行以下代码时:

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指针返回数组的实际内容?

3 个答案:

答案 0 :(得分:6)

这是由于<<运算符过载造成的。对于char *,它将其解释为空终止的C字符串。对于int指针,您只需获取地址。

答案 1 :(得分:1)

operator

  

cout&lt;&lt;

是重载'char *'所以它知道如何处理它(在这种情况下,打印所有字符直到最后一个)。

但是对于int不是,所以它只打印出'内存地址'

答案 2 :(得分:1)

指向char的指针与字符串文字的类型相同。因此,为简单起见,cout将打印char数组的内容,就好像它是一个字符串一样。所以当你这样做时:

cout << "Some text" << endl;

它不会打印地址,就像您的代码一样。

如果您想修改地址,请将其转换为size_t

cout << reinterpret_cast<size_t>(ptr) << endl;