0
我希望有人能向我解釋爲什麼與基準參數的函數會被調用,而不是一個帶有指針參數調用funcs中,給出類似如下:與指針PARAMS VS參考PARAMS
int Func1 (int & a);
int Func1 (int * a);
int main()
{
int y = 1;
int & x = y;
int * z = & y;
Func1(y); // Calls reference version
Func1(&y); // Calls pointer version
Func1(z); // Calls pointer version
return 0;
}
int Func1 (int & a)
{
cout << "Reference param Func1 called" << endl;
a = a + 1;
return a + 1;
}
int Func1 (int * a)
{
cout << "Pointer param Func1 called" << endl;
*a = *a + 1;
return *a + 1;
}
我很困惑,決定如何調用Func1(& y)調用的Func1的指針參數版本,而不是參考版本的Func1。另外,爲什麼Func1的參考參數版本不是爲Func1(z)調用選擇的?如果z保存一個地址,我不明白爲什麼地址不能傳遞給Func1的參考參數(& a)。
它關於類型,z的類型是一個指針。 –
啊,我明白了。因此,Func1(int&a)創建一個引用,它不會接收地址作爲傳遞的參數,而Func1(int * a)接收地址作爲傳遞的參數,其形式可以是&y或z,其中z是一個指針? –
@Caulibrot:'&y' *是一個指針。所以這是「z,其中z是指針」的例子。 –