【发布时间】:2011-08-14 13:47:55
【问题描述】:
我输入了以下示例:
#include <iostream>
double f(double* x, double* y)
{
std::cout << "val x: " << *x << "\n";
std::cout << "val y: " << *y << "\n";
return *x * *y;
}
double f2(double &x, double &y)
{
std::cout << "val x: " << x << "\n";
std::cout << "val y: " << y << "\n";
return x * y;
}
int main()
{
double a, b;
a = 2;
b = 3;
std::cout << f(&a, &b) << "\n";
std::cout << f2(a, b) << "\n";
return 0;
}
在函数f 中,我将x 和y 声明为指针,我可以使用*x 获取它们的值。当调用f 时,我需要传递我传递的参数的地址,这就是我传递&a, &b 的原因。 f2是一样的,只是定义不同。
现在我的问题是:它们在内存管理方面真的相同吗?两者都不复制传递的值,而是传递引用?
我想知道f2,因为我无法读出f2 中x 的地址,所以我知道更多关于f 中x 和y 的信息(我知道地址和值) .
提前致谢!
编辑:好的,谢谢,经过更多研究,我发现了一个非常有用的主题:
Pointer vs. Reference
还有一个指向 google 编码指南 http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Reference_Arguments 的链接,这很像 useful 我觉得(据我现在理解,这是一种主题品味的形式)要更清晰
【问题讨论】:
-
这不是 C,这是 C++。
-
啊,我明白了,在 C 语言中我总是必须使用指针,好的,谢谢!目前还不知道!
-
>谷歌风格指南 - 避免它。它在 2008 年(链接的日期)已经过时,今天更糟。
-
@MSalters 避免使用哪一个? 'f' 风格还是 'f2' 风格?
-
@Abhinav:避免使用 Google 风格指南。它已经完全过时了。
标签: c++ function pointers pass-by-reference