我有这种情况。
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);
在上面的语句中,您正在传递一个整数的地址。因此,在接收端它应该是一个指针。
编辑:
我认为您对指针和引用感到困惑。将引用视为变量的别名。在某种程度上,类推就像是放置在桌面上的应用程序的捷径。当您单击快捷方式时,您实际上是在运行“应用程序”目录中安装的可执行文件。因此,捷径更像是用于运行应用程序可执行文件的别名。
可以为一个应用程序放置快捷方式来打开其他应用程序吗?不会。出于类似的原因,不能重新引用。