C++标准库中I/O类对<<操作符重载,因此在遇到字符型指针时会将其当作字符串名来处理,输出指针所指的字符串。因此,我们用static_cast强制类型转换把字符串指针转换成无类型指针即可输出指针地址
#include<iostream>
using namespace std;
int main() {
char *p="abc";
cout << p << endl;//"abc"
cout << *p << ' ' << (void*) p << endl;
cout << *(p+1) << ' ' << static_cast<void*>(p+1) << endl;
cout << *(p+2) << ' ' << static_cast<void*>(p+2) << endl;
return 0;
}
输出如下
abc a 0x404001 b 0x404002 c 0x404003