char c = 'a';
char* p = &c;
cout << p << endl;
cout << *p << endl;
这是用C++语言编写的代码。
为什么在第一个cout语句中,程序尝试打印直到它找到一个空字符,而在第二个语句中,它只打印一个字符?
在C++中,指向char
的指针通常被认为是“C字符串”(以NULL结尾的字符串或char
)。
因此,在您的两次调用中,指针将为常量char*
调用std::ostream
的运算符<<
重载--它将其打印为以空结尾的字符串,而char
版本将为字符调用std::ostream
的运算符<<
重载。
如果要打印指针的地址,则需要首先将指针强制转换为void*
:
std::cout << static_cast<void*>(p) << std::endl;