提问人:Shubham Patil 提问时间:2/3/2022 更新时间:2/3/2022 访问量:69
我不明白在下面的代码中使用引用调用如何将结构传递给函数?
I am not getting how the structure is being passed to a function in following code using call by reference?
问:
就像在这段代码中一样,我不明白的是 'n1' [ increment(n1) ] 是如何传递给 'number& n2'[void increment(number& n2)] 的。 我们如何将 N1 传递到 &N2? 如果我弄错了基础知识,请告诉我,因为直到最近我才开始学习 C 和 C++。
// C++ program to pass structure as an argument
// to the functions using Call By Reference Method
#include <bits/stdc++.h>
using namespace std;
struct number {
int n;
};
// Accepts structure as an argument
// using call by reference method
void increment(number& n2)
{
n2.n++;
}
void initializeFunction()
{
number n1;
// assigning value to n
n1.n = 10;
cout << " number before calling "
<< "increment function:"
<< n1.n << endl;
// calling increment function
increment(n1);
cout << "number after calling"
<< " increment function:" << n1.n;
}
// Driver code
int main()
{
// Calling function to do required task
initializeFunction();
return 0;
答:
2赞
Khushi Bhambri
2/3/2022
#1
由于您将参数递增函数作为参考,因此当您将 n1 传递给它时,如下所示:
increment(n1);
它作为对增量函数的引用传递,这基本上意味着 n1 的别名是用名称 n2 创建的,这意味着每当 n2 发生变化时,它也会反映在 n1 中(因为它们引用的是相同的位置)void increment(number& n2)
此外,将变量作为 Reference 传递意味着允许函数修改变量,而无需通过声明引用变量来创建变量的副本。传递的变量和参数的内存位置是相同的,因此,对参数的任何更改都会反映在变量本身中。
因此,在函数调用:之后递增n1.n
评论
1赞
Shubham Patil
2/3/2022
明白了。。。刚刚经历了这个参考变量(别名)的概念......感谢您的帮助.....另外,根据我所读到的内容,我想在这里提到的一件事是它们不指向相同的位置,而是共享相同的位置(因为只有指针才能指向内存位置而不是引用变量)......如果我错了,请纠正我。
上一个:const C 中的结构参数
下一个:go 中的递归函数不存储更改
评论
使用命名空间 std
是一个坏习惯,并且通常被认为可以用于小示例,但包含任何位
头文件都是完全错误的。n1
increment(n1);
increment
n1
increment
n2
n1
increment(n1)
number& n2 = n1; n2.n++;
n2
n1
n2
n1