c++ - 我怎样才能得到一个char&的地址?

标签 c++

此代码可以编译但不会生成我期望的结果:

#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/

相关文章:

c++ - 为类设置返回值?

c++ - Python 3.2 PyRun_SimpleString - 它在哪里?

c++ - 你会选择什么?虚函数、模板还是分支?

c++ - 计算旋转角度

c++ - 如何在 C++ 中使用类修改器将变量加倍

c++ - 一个函数可以返回一个指向它自己类型的指针吗?

c++ - 无分支 K 均值(或其他优化)

c++ - 使用虚拟析构函数,我是否需要为每个子类显式声明一个虚拟析构函数?

c++ - 避免使用模板函数的 if-else 语句

python - Boost Python Hello World 示例在 Python 中不起作用