编译器总是打印一个十六进制/八进制数

0 c++ reference c++11 c++17

我刚刚开始学习 C++ 中的引用,我尝试了以下代码:

#include <iostream>

    using namespace std;
    
    int main()
    {
        int ival = 1024;
        int &refVal = ival;
        // refVal refers to (is another name for) ival
        cout<< &refVal<<endl;
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

这个程序的输出是:

0x61feb8
Run Code Online (Sandbox Code Playgroud)

我不知道是什么?如果您觉得我在这里缺乏一些基本/非常重要的知识,请详细说明!

编辑:感谢大家的解释!抱歉问的太幼稚了!

for*_*818 5

我不知道是什么?

cout<< &refVal<<endl;您正在打印的地址refVal(这是 的地址ival)。

如果您觉得我在这里缺乏一些基本/非常重要的知识,请详细说明!

您将引用与指针混淆,并且&有两种不同的含义:

参考声明:

 int& refVal = ival;
 // ^ part of the type
Run Code Online (Sandbox Code Playgroud)

运营商地址:

 int* refPtr = &refVal;
             //^ address-of operator
Run Code Online (Sandbox Code Playgroud)

坦率地说,是的,这既基础又非常重要,应该在介绍性书籍的第一章中介绍。

ival通过参考打印 的值refVal

std::cout << refVal;
Run Code Online (Sandbox Code Playgroud)

请注意,“取消引用引用”没有特殊语法。引用就像一个别名,是同一个对象的不同名称。