我输入了以下示例:
#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
的地址,所以我对 知道中的 x 和 y 有了更多的了解(在那里我知道地址和值)。
先谢谢你!
编辑 : 好的,谢谢,在做了一些研究之后,我发现了一个非常有用的话题:
指针与引用
还有一个链接到谷歌编码指南 http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Reference_Arguments,这是相当 useful
我觉得(正如我现在理解,这是一种形式的主题口味) ,使更强 > 清楚