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

Printing C++ int pointer vs char pointer

本文关键字:指针 char 打印 C++int      更新时间:2023-10-16

当我运行以下代码时:

int i[] = {1,2,3};
int* pointer = i;
cout << i << endl;
char c[] = {'a','b','c',''};
char* ptr = c;
cout << ptr << endl;

我得到这个输出:

0x28ff1c
abc

为什么int指针返回地址,而char指针返回数组的实际内容?

这是由于<<运算符过载造成的。对于char *,它将其解释为以null结尾的C字符串。对于int指针,您只需要得到地址。

操作员

cout<lt;

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

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

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

cout << "Some text" << endl;

它不打印地址,与您的代码一样。

如果要查找地址,请将其转换为size_t

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