這裏有什麼不是指針,但引用。兩者之間有一些顯着的差異。首先,引用不能是NULL
,它們必須指向已經初始化的東西。其次,所需的語法是不同的。
舉個例子,如果你使用指針,該函數將有簽名:
void getTime(int* hours, int* minutes, int* seconds) const
{
hours = &hr;
minutes = &min;
seconds = &sec;
}
你會然後調用它像這樣:
int hours, minutes, seconds;
hours = minutes = seconds = 0;
getTime(&hours, &minutes, &seconds);
參考類似的方式行事,也就是說,它們被用來改變傳入的基本參數,以及避免複製。但是,語法不同:
int hours, minutes, seconds;
hours = minutes = seconds = 0;
getTime(hours, minutes, seconds); //Notice & not required
您什麼時候使用每個?一般來說,當你可以的時候利用參考,當你必須的時候指出。在現代C++中,指針經常被避開而偏向其他結構。對於諸如多態的事情,或者直接修改放入容器中的值,它們仍然是必需的(儘管這很可能超越你的位置,如果這些都沒有意義,那麼現在就忽略它)。
傳遞類或大對象時,請使用reference-to-const。因此,例如std::vector
通常以void some_func(const std::vector<int>& v)
的形式傳遞。如果你真的需要修改它,請參考void some_func(std::vector<int>& v)
。
你的代碼中沒有指針,在調用站點也沒有指針。 –
應該是什麼指針? – 0x499602D2
你正在使用引用,看看http://stackoverflow.com/questions/114180/pointer-vs-reference – Jerome