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



如何显示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的行为是为了方便绝大多数用例的工作而进行的设计选择的结果,而牺牲了使您的特定用例编写起来更加冗长。

最新更新