了解字符指针的流运算符重载
使用 printf() 打印字符指针时,转换说明符确定是地址还是字符指针打印字符串,例如 %u 表示地址或 %s 表示字符串。然而,对于 C 流和 cout,它如何决定输出哪一个?
考虑以下代码:
<code class="cpp">char ch = 'a'; char *cptr = &ch; cout << cptr << endl;
在此示例中,cout 尝试将 cptr 解释为字符串。要使用 cout 打印 ch 的地址,必须应用转换来解决这种歧义。
解决方案:转换为 Void 指针
获取使用 cout 的地址是通过类型转换实现的。正确的做法是:
<code class="cpp">cout << static_cast<void *>(cptr) << endl;</code>
通过将 cptr 强制转换为 void *,我们强制 cout 执行采用 void 指针的适当重载 (ostream&operator
以上是当传递字符指针时,“cout”如何决定是打印地址还是字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!