如何获取字符的地址&?

How can I get the address of a char&?

本文关键字:地址 字符 何获取 获取      更新时间:2023-10-16

这段代码编译了,但没有生成我期望的结果:

#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 's有一个类似于以下的函数:

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

当你要求一个字符的地址时,你得到一个char*;与任何其他类型一样,addressof &操作符返回指向该类型的指针。由于char*转换为char const*,因此调用前面提到的函数,就好像它是一个以空结束的字符串。

如何获取char的地址呢?混叠吗?

表达式为&href

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

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

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

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

打印地址