首页 > 后端开发 > C++ > 正文

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

Susan Sarandon
发布: 2024-11-04 10:23:31
原创
231 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!