gpt4 book ai didi

c++ - 引用参数为 : how it works? 的子函数

转载 作者:行者123 更新时间:2023-11-30 02:35:25 24 4
gpt4 key购买 nike

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

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

我认为关于子功能,可能会像下面这样工作:

当我们调用 inc(n) 时,之后计算机可能会创建一个 var int m; 并且:

m=n; m++; 最后被删除。

带有引用参数的子函数:

#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++; return m; 最后被删除,但是 nn+1 改变了。

我为什么要问?有2个原因:1)我的 friend 说:没有创造 int &mfunction inc(int &x) 作品如:n 跑进跑出。2) 如果有 int &m 为什么大家都说“inc (int &x) faster inc(int x)”?

我的理解对吗?如果不是,你能告诉我为什么吗?

最佳答案

从编译器的角度来看,引用与指针相差无几。所以在

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

你只传递一个引用(变量n的地址)给函数,被调用者变量实际上增加了。

而在

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

您按值传递并且正在修改本地拷贝。

关于c++ - 引用参数为 : how it works? 的子函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33625212/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com