2016-10-01 45 views
0

此代码编译,但不会产生结果,我期望:如何获取char&的地址?

#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&是别名?

+0

这不是问题,但不要使用'std :: endl',除非你需要额外的东西。 ''\ n''结束一行。 –

回答

2

如何检索char char的地址&是别名?

该表达式是&href

您所看到的问题是由于&href的类型为char*。因此,

std::cout << &href << std::endl 

尝试打印以空字符结尾的字符串。您可以使用

std::cout << (void*)&href << std::endl 

打印地址。

3

只需将其转换为void*

std::cout << (void*)&href << std::endl; 

要打印的原始字符,因为std::ostream的有一个功能,类似于此:

std::ostream& operator<<(std::ostream& os, char const* val); 

当你要求的地址一个角色,你会得到一个char*;与任何其他类型一样,&运算符的地址返回指向该类型的指针。由于char*转换为char const*,前面提到的函数被调用,就好像它是一个以空字符结尾的字符串。