首页  >  文章  >  后端开发  >  当传递字符指针时,“cout”如何决定是打印地址还是字符串?

当传递字符指针时,“cout”如何决定是打印地址还是字符串?

Susan Sarandon
Susan Sarandon原创
2024-11-04 10:23:31232浏览

How does `cout` decide whether to print the address or the string when you pass a character pointer?

了解字符指针的流运算符重载

使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn