gpt4 book ai didi

c++ - 使用指针在 C++ 中显示 char 变量的地址?

转载 作者:太空宇宙 更新时间:2023-11-03 10:44:13 26 4
gpt4 key购买 nike

如何显示char变量的地址?我找到了一个使用类型转换的解决方案,方法是先将其转换为 int 或 float 或 void 等,然后使用指针显示地址。但是,对于没有类型转换的特定解决方案,还有其他替代方案吗?使用类似的指针

char var = 'a'; 
char* ptr;
ptr = &var;
cout << ptr;

但在这种情况下,即使指针指向 var 的地址,但显示 var 的值。为什么?如果是这样,那么我们如何使用指针获取 var 的地址?不使用类型转换

cout << "Address of var = " << static_cast<void*>(&var)  << endl;

或者我们必须为特定问题重载任何运算符?

最佳答案

您需要编写转换的唯一原因是因为 std::ostreamchar * 有一个特殊的重载,假设给定的指针指向一个以零结尾的字符数组的第一个元素,并将愉快地尝试遍历该数组直到它达到零。

不幸的是,这意味着您不能简单地传递单个字符的地址并打印该地址的值,这就是您需要强制转换的原因。对于所有其他(非字符)指针,std::ostream 已经打印了指针值的数字表示。

没有任何您可以“做”的事情,但也没有真正的问题,因为您已经找到了解决方案。如果您处于通用设置中并且想要打印对象指针,则只需向 void * 添加一个强制转换,它将适用于所有输入类型。 std::ostream 的行为是设计选择的结果,目的是为了方便大多数用例的工作,但代价是使您的特定用例编写起来更加冗长。

关于c++ - 使用指针在 C++ 中显示 char 变量的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26191628/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com