我輸入下面的例子:差分++
#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
,因爲我無法讀出x
的地址f2
所以我知道更多關於x和y在f
(我知道地址和價值)。
在此先感謝!
編輯:好感謝,做一些更多的研究後,我發現了一個非常有用的話題:
Pointer vs. Reference 還有谷歌編碼規則http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Reference_Arguments這是相當useful
我覺得(我現在明白一個鏈接,這是一種主題味道),使更多明確
這不是C,這是C++。 – delnan 2011-04-28 09:50:56
我在C中看到我總是用指針,好的,謝謝!到目前爲止還不知道! – tim 2011-04-28 10:01:03
> Google風格指南 - 避免它。它在2008年已過時(相關日期),今天更糟。 – MSalters 2011-04-28 11:09:23