Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 带参考参数的子函数:如何工作?_C++ - Fatal编程技术网

C++ 带参考参数的子函数:如何工作?

C++ 带参考参数的子函数:如何工作?,c++,C++,我最初展示的是a程序,它有一个子函数,带有非参考参数,如下所示: #include<iostream> using namespace std; int inc(int x) { x++; return x; } main() { n=3; inc(n); cout<<n; } 我认为: 当我们调用inc(n),之后可能是计算机将创建一个varint&m=n; m++;返回m最后它被擦除,但是n被n+1更改 我为什么要问?原因有二

我最初展示的是a程序,它有一个子函数,带有非参考参数,如下所示:

#include<iostream>
using namespace std;
int inc(int x)
{
    x++;
    return x;
}
main()
{
    n=3;
    inc(n);
    cout<<n;
}
我认为:

当我们调用
inc(n)
,之后可能是计算机将创建一个var
int&m=n
m++;返回m
最后它被擦除,但是
n
n+1
更改

我为什么要问?原因有二: 1) 我的朋友说:没有创造
int&m
function inc(int&x)
的作品,比如:n run in and out。 2) 如果存在
int&m
为什么每个人总是说“
inc(int&x)
faster
inc(intx)


我对这一点的理解正确吗?如果没有,你能告诉我为什么吗?

从编译器的角度来看,引用离指针不远。所以在

int inc(int &x)
{
    x++;
    return x;
}
...
inc(n);
您只将引用(变量
n
的地址)传递给函数,被调用者变量实际上会增加

鉴于

int inc(int x)
{
    x++;
    return x;
}
...
inc(n);
您按值传递,并且正在修改本地副本

int inc(int x)
{
    x++;
    return x;
}
...
inc(n);