按引用传递函数参数
Pass-By-Reference Function Parameter
我正在审查一些代码来为自己测试运行,我在教科书中读到,这里是:
#include <iostream>
#include <fstream>
using namespace std;
const double PI = 3.1415926535897932;
void area_of_circle(const double R, double& L, double& A);
int main() {
const int N = 10;
double R[N];
double area, perimeter;
int i;
for (i = 0; i < N; i++) {
cout << "Enter radius of circle: ";
cin >> R[i];
cout << "i= " << (i+1) << " R(i)= " << R[i] << "n";
}
ofstream myfile ("AREA.txt");
for (i = 0; i < N; i++){
area_of_circle(R[i], perimeter, area);
myfile << (i+1) << ") R= " << R[i] << " perimeter= "
<< perimeter << "n";
myfile << (i+1) << ") R= " << R[i] << " area= "
<< area << "n";
}
myfile.close();
}
void area_of_circle(const double R, double& L, double& A) {
L = 2.0*PI*R;
A = PI*R*R;
}
我所做的与作者所做的不同是没有引用我的 const 双 R 参数。他在area_of_circle函数中包含 & 参考符号 (const double&R(。我在有和没有参考符号的情况下运行代码,并且两者都收到了相同的结果。
基本上我的问题是,如果它们都产生相同的答案,为什么作者要包括它?我选择不包括它,因为我的理解是,如果 R 在整个函数计算过程中没有变化,为什么要包含它。
在您提供的示例中,使用或不引用R
参数对执行时间没有太大影响,因为参数很小(单双精度(,但是如果您将整个表作为副本(不是引用(传递,它可能会对程序的执行时间产生重大影响。
通过 const 引用传递不会导致内存复制。它仅引用存储参数的内存。 const
用于避免修改引用传递的参数。如果你传递简单的参数(如double(到函数,你不需要const
,因为你只能修改副本。
也检查一下这个: C++:参数传递"通过引用传递">
相关文章:
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 使用指向成员的指针将成员函数作为参数传递
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 修改函数中的指针(将另一个指针作为参数传递)
- 将成员函数指针作为参数传递给模板方法
- 如何在C++中将迭代器作为函数参数传递
- 将附加参数传递给使用 beast::bind_front_handler 调用的函数
- 如何将一个类的函数作为另一个类的另一个函数的参数传递
- 如何传递带有通过引用传递的结构参数的函数?
- 如何在 c++ 中将函数作为参数传递?
- 如何将成员函数作为回调参数传递给需要"typedef-ed"自由函数指针的函数?
- 将参数打包的参数传递到 std::queue 中,以便稍后使用不同的函数调用
- 为什么我不能将引用作为 std::async 的函数参数传递
- 如何在不使用指针的情况下将派生类的对象作为参数传递给基类中的函数?
- 将__device__ lambda 作为参数传递给 __global__ 函数
- 是否可以在不填充自己的参数的情况下将模板函数作为参数传递?
- 如何将成员函数作为参数传递并在派生对象上执行方法列表
- 将函数作为参数传递以避免重复代码
- 如何在类(C )中作为参数传递函数