我有这种情况。

 case 1
    void printInt(int & i) {}

    int main () {
       int i=1;
       printInt(&i);

    }


printInt需要一个引用,因此,在主体内部,我调用printInt函数并提供了引用i。它是否正确。

那我也可以

 case 2
     int main () {
       int i=1;
        printInt(i);    // i is a lvalue, and printInt function is expecting a lvalue

}


那么,情况1和情况2似乎有冲突吗?

最佳答案

第一种情况甚至没有编译,因为您传递了int*,但是编译器希望引用int类型。

printInt(&i);


在上面的语句中,您正在传递一个整数的地址。因此,在接收端它应该是一个指针。

编辑:

我认为您对指针和引用感到困惑。将引用视为变量的别名。在某种程度上,类推就像是放置在桌面上的应用程序的捷径。当您单击快捷方式时,您实际上是在运行“应用程序”目录中安装的可执行文件。因此,捷径更像是用于运行应用程序可执行文件的别名。

可以为一个应用程序放置快捷方式来打开其他应用程序吗?不会。出于类似的原因,不能重新引用。

09-08 09:20