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

时间:2014-10-04 09:55:12

标签: c++ pointers char variable-address

我们如何显示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;

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

1 个答案:

答案 0 :(得分:7)

你需要编写演员表的唯一原因是因为std::ostreamchar *有一个特殊的重载,假设给定的指针指向一个元素的第一个元素零终止的字符数组,并且很乐意尝试遍历该数组,直到它达到零。

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

没有任何东西你可以“做”,但也没有真正的问题,因为你已经发现了解决方案。如果您处于通用设置并且想要打印对象指针,那么只需向void *添加一个转换,它将适用于所有输入类型。 std::ostream的行为是设计选择的结果,为了方便使绝大多数用例易于使用,代价是使您的特定用例更加冗长。