[英]C++: Syntax of passing a pointer array through a function
所以我有這兩種方法:第一種是獲取 5 個 integer 值,將它們相加,然后調用返回最低找到值的 findLowest() 方法,並從總和中減去該值(然后除以 4 並打印結果向屏幕)。
我認為我遇到的問題是它返回的值是 memory 地址。 我試圖了解如何取消引用整數以獲得值,但說實話,我查找過的所有在線資源都讓我頭疼。
以下是我到目前為止所擁有的:
void calcAverage(int* arr[5])
{
int sum = 0;
for (int a = 0; a < 5; a++)
sum += *arr[a];
sum -= findLowest(*arr);
cout << "AVERAGE " << (sum / 4) << endl;
}
int findLowest(int* arr[5])
{
int lowest = *arr[0];
for (int a = 1; a < 5; a++)
{
if ((int)arr[a] < lowest)
lowest = *arr[a];
}
return lowest;
}
最重要的是,在上面寫着
sum -=findLowest(*arr);
它彈出一個錯誤,上面寫着
“int *”類型的參數與“int **”類型的參數不兼容
提前感謝您的幫助,如果帖子有點散漫,我深表歉意:我對這個指針/參考資料一開始並沒有真正的信心。
你快到了,但你不應該取消對這一行的引用:
sum -= findLowest(*arr);
相反,只需傳入數組,因為這是 function 所期望的:
sum -= findLowest(arr);
無關:
如果可以,請使用std::vector
或std::array
,前者用於動態大小的 arrays,后者用於編譯時數組。 這兩種都更安全,功能更多,也更容易傳遞。
還使用智能指針代替原始指針來擁有指針。 智能指針管理 object 的所有權,因此您無需手動調用new
和delete
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.