C++ &引用;return";带有&-运算符但没有指针:这是如何工作的?

C++ &引用;return";带有&-运算符但没有指针:这是如何工作的?,c++,c,pointers,variables,return-value,C++,C,Pointers,Variables,Return Value,如果已经有人问过,我很抱歉,但是我在网上找不到类似的问题/例子 我现在正在大学里访问C++课程(既然我必须这样做),我已经从以前的讲座中获得了相对好的C语言。 昨天在讲座上,我看到了一些奇怪的事情:我们讨论了如何在函数中返回多个变量而不使用指针。在C语言中,我会这样编码(使用指针): //main.c #包括 无效foo(int*addr\u val\u var1,int*addr\u val\u var2); int main() { int-var1,var2; foo(&var1和&var

如果已经有人问过,我很抱歉,但是我在网上找不到类似的问题/例子

我现在正在大学里访问C++课程(既然我必须这样做),我已经从以前的讲座中获得了相对好的C语言。

昨天在讲座上,我看到了一些奇怪的事情:我们讨论了如何在函数中返回多个变量而不使用指针。在C语言中,我会这样编码(使用指针):

//main.c
#包括
无效foo(int*addr\u val\u var1,int*addr\u val\u var2);
int main()
{
int-var1,var2;
foo(&var1和&var2);
printf(“结果:%d%d\n”,var1,var2);
}
无效foo(int*addr\u val\u var1,int*addr\u val\u var2)
{
*addr_val_var1=5;
*addr_val_var2=7;
}
然而,我的教授说我们不允许使用指针,这是他的解决方案:

// main.cpp 

#include <iostream>
using namespace std;

// forward declarations
void foo(int &var1, int &var2);

int main()
{
    int var1, var2;

    foo(var1, var2);
    cout << "Results: " << var1 << " " << var2 << endl;

}

void foo(int &var1, int &var2)
{
    var1 = 5;
    var2 = 7;
}
//main.cpp
#包括
使用名称空间std;
//转发声明
void foo(int&var1、int&var2);
int main()
{
int-var1,var2;
foo(var1,var2);
我相信(我不是C++程序员)

表示变量
var1
var2
是“引用”。这是一种语法方式,表示变量是通过引用传递的,而不是通过值传递的。编译器现在在主体中使用引用,如
var=5;
中所示。它取消引用该变量,然后分配给它


当然,在下级,这将被实现为指针。

你的问题非常基本和广泛。你应该阅读C++参考。C引用不存在。我投票把这个问题关在题外,因为OP应该只看它的教科书,我敢肯定。解释C++中的传递引用问题,以及指针传递和指针传递的区别。这不是编程问题。它只是基本语言知识。这种方法是通过引用来调用的。您可以找到有关它的好解释。例如:您不返回任何东西。函数<代码> f。oo(int&var1,int&var2)被标记为“空”,这意味着它不返回任何东西。参数可以做到。你可以把引用看作是被引用的指针。读一遍引用和VS值。在线上有很多来源。C++的指针和指针的传递是不同的,C++中的行为方式不同。在C中,没有指针的传递,只有指针I。C++的理解和解释在很多地方是错误的。safe@P__J__,我删除了我的意见。
// main.cpp 

#include <iostream>
using namespace std;

// forward declarations
void foo(int &var1, int &var2);

int main()
{
    int var1, var2;

    foo(var1, var2);
    cout << "Results: " << var1 << " " << var2 << endl;

}

void foo(int &var1, int &var2)
{
    var1 = 5;
    var2 = 7;
}
void foo(int &var1, int &var2)