c – 为什么将cout指针指向cout不打印地址?

当我用printf()打印一个char指针时,它使用转换说明符决定是应该打印地址还是根据%u或%s打印整个字符串.

但是当我想用cout做同样的事情时,cout将如何决定在地址和整个字符串中应该打印什么?这是一个示例来源:

int main()
{
  char ch='a';
  char *cptr=&ch;
  cout<<cptr<<endl;
  return 0;
}

在我的GNU编译器中,cout尝试将ch输出为字符串.

我如何使用cout通过cptr获取ch的地址?

最佳答案
过载分辨率选择ostream&运算符<<(ostream& o,const char * c);用于打印C风格的字符串.你想要另一个ostream&运算符<<(ostream& o,const void * p);被选中.你最喜欢这里的演员:

 cout << static_cast<void *>(cptr) << endl;

转载注明原文:c – 为什么将cout指针指向cout不打印地址? - 代码日志