簡體   English   中英

C++:通過 function 傳遞指針數組的語法

[英]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::vectorstd::array ,前者用於動態大小的 arrays,后者用於編譯時數組。 這兩種都更安全,功能更多,也更容易傳遞。

還使用智能指針代替原始指針來擁有指針。 智能指針管理 object 的所有權,因此您無需手動調用newdelete

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM