Cout 字符指针的解释
与 printf() 不同,它提供特定的转换说明符(%u 或 %s)来确定是否打印 char 指针指向的地址或整个字符串,cout 需要显式方法来区分。
示例问题:
考虑以下代码片段:
<code class="cpp">int main() { char ch = 'a'; char *cptr = &ch; cout << cptr << endl; return 0; }
在此示例中,使用默认的 GNU 编译器,cout 将 char 指针解释为 C 样式字符串,并尝试打印 cptr 指向的字符。但是,如果目的是打印 ch 的地址,则需要采用不同的方法。
解决方案:
使用 cptr 和 cout 打印 ch 的地址,需要显式类型转换。这是通过利用 static_cast<> 来实现的。运算符,如下所示:
<code class="cpp">cout << static_cast<void *>(cptr) << endl;</code>
通过显式将 cptr 强制转换为 void *,重载决策会选择适当的 ostream& 运算符,该运算符将 void 指针作为参数。这会正确打印 ch 的地址。
以上是如何使用“cout”打印带有字符指针的地址?的详细内容。更多信息请关注PHP中文网其他相关文章!