為什么count不用指針作為參數,而arr必須要用指針作為參數。arr1的引用為什么不是getMaxOrMin(&arr1, 4, isMax)
2 回答
已采納

onemoo
TA貢獻883條經驗 獲得超454個贊
你沒搞懂的好像是“數組傳參”:
在 C++ 中,當想要向函數中傳入數組時,數組在傳參時會隱式轉型為指向其首元素的指針,函數實際上得到的是這個指針。所以函數聲明中的第一個形參要聲明為 int 指針類型。
main 函數中的 getMaxOrMin(arr1, ...) 這里就是函數調用,這里傳入數組直接寫數組名就可以了。
這里發生的只是數組傳參,和“引用”沒有關系。 不要搞混了,& 這個符號不是只有“引用”這一個含義:
當聲明一個變量時,變量名前有 & 修飾表示這個變量是“引用類型”。
而在使用變量時,前面的 & 是“解引用(或稱取地址)運算符”,用來得到該變量的地址。
所以不要看到 & 就只想“引用”。
上面解釋了為什么“arr必須要用指針作為參數”,那么“為什么count不用指針作為參數”:
函數的這第二個參數,你打算傳入整形值,那么形參就聲明為對應的 int 就可以了。
你最好去梳理下關于形參的一些知識:普通類型形參、指針類型形參、引用類型形參,理解下它們的作用和意義。你好像把這些搞混了。

AAnonymous
TA貢獻62條經驗 獲得超31個贊
你這里`&`不是引用,是取地址符。即使你函數聲明為引用,調用時傳實參也不用加 `&`
所以,Google C++ Code Style 里建議建議不要使用非const引用形參,閱讀時容易產生歧義
- 2 回答
- 0 關注
- 1049 瀏覽
添加回答
舉報
0/150
提交
取消