這兩個引數宣告和呼叫方法之間有什么區別(如果有的話)?
#1:
void MyFunction(MyStruct& msParam)
{
.....
}
MyStruct ms;
MyFunction(ms);
#2:
void MyFunction(MyStruct* msParam)
{
.....
}
MyStruct ms;
MyFunction(&ms);
它們似乎都傳遞了一個指向變數 'ms' 的指標,所以我猜測它們在功能上是相同的并且同樣有效,但是在某些情況下是否更喜歡一種樣式?
uj5u.com熱心網友回復:
這樣的函式宣告
void MyFunction(MyStruct& msParam) { ..... }
不是有效的 C 宣告。
它可以是有效的 C 函式宣告,其中引數表示對 MyStruct 型別的物件的參考。
這個函式宣告
void MyFunction(MyStruct* msParam) { ..... }
是一個有效的 C 和 C 函式宣告,其中引數具有指向 MyStruct 型別物件的指標型別。
因此,要呼叫該函式,您需要將運算子 & 應用于傳遞的物件以獲取指向該物件的指標。
MyStruct ms;
MyFunction(&ms);
所以功能也不一樣。
第一個函式處理型別的物件,MyStruct而第二個函式處理指標型別MyStruct *。
uj5u.com熱心網友回復:
void MyFunction(MyStruct& msParam)
{
.....
}
第一個宣告用在 C 中,因為 C 是面向物件的。所以代碼 -
我的結構毫秒;我的功能(毫秒);
請參閱 MyStruct 物件的參考。
然而,
void MyFunction(MyStruct* msParam)
{ ..... }
我的結構毫秒;
MyFunction(&ms);
可以在 C 和 C 中使用,因為這里我們傳遞了一個參考和指向 MyStruct 的例外指標。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/385076.html
上一篇:printCat1(Cat*cat)Vs。printCat2(Catcat)&MorePointers'Questions
