此代码可以编译但不会生成我期望的结果:
#include <iostream>
int main()
{
char h = 'h';
char& href = h;
std::cout << &href << std::endl;
int x = 1;
int& xref = x;
std::cout << &xref << std::endl;
}
结果是这样的:
h
0x22fe38
如何检索 char
的地址,我的 char&
是别名?
最佳答案
只需将其转换为 void*
:
std::cout << (void*)&href << std::endl;
您正在打印原始字符,因为 std::ostream
的函数看起来与此类似:
std::ostream& operator<<(std::ostream& os, char const* val);
当你请求一个字符的地址时,你得到一个char*
;与任何其他类型一样,addressof &
运算符返回指向该类型的指针。由于 char*
转换为 char const*
,调用前面提到的函数,就好像它是一个空终止字符串一样。
关于c++ - 我怎样才能得到一个char&的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39803141/