如果這聽起來像是一個家庭作業問題,那麼這是公平的,因爲這是一箇中期審查問題,通過爲本季度做更多準備工作。使用指針尋找最大的配對總數
作爲練習,我們鼓勵在數組中找到最大的元素總和並返回結果。爲了更好地弄清楚如何做到這一點,我在網上找到了這是在C++而不是C.它是這樣的功能上的代碼示例:
int findLargestSumPair(int arr[], int n)
{
int first, second;
if (arr[0] > arr[1])
{
first = arr[0];
second = arr[1];
}
else
{
first = arr[1];
second = arr[0];
}
//traverse remaining array and find first and second largest elements
for (int i = 2; i<n; i++)
{
if (arr[i] > first)
{
second = first;
first = arr[i];
}
else if (arr[i] > second && arr[i] != first)
second = arr[i];
}
return (first + second);
}
所以,如果你叫的東西的功能類似,
int largestSum = findLargestSumPair(numberarray, numberarraylength);
...那麼應該存儲在largestSum
的值。
但是,如果你要存儲第一和第二大數字變量他們加在一起之前,那麼你就必須有兩個參數的功能進行修改,比如first
加載這一功能和second
被findLargestSumPair(int arr[], int n, int *first, int *second)
傳遞,最後不會返回任何東西,因爲通過使用指針,它們被函數本身改變。
我在正確的軌道上,int *first
和int *second
是這個正確的語法,他們應該在函數的定義中的指針?因爲我曾試圖做出改變,我得到的錯誤,如:
largestsum.c:3:6:note: expected 'int *' but argument is of type 'int'
void findLargestSumPair(int arr[], int n, int *first, int *second)
warning: passing argument 4 of findLargestSumPair makes pointer from integer without a cast: findLargestSumPair(numbers, 9, largest, next_largest);
我如何使用指針錯誤在這種情況下使用該功能,而不是返回結果修改值?
您顯然正確使用* third *參數,調用中第三個和第四個參數之間的區別是什麼?另外,請向我們展示一個[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve),其中包括*如何調用函數以及哪些值/參數。最後,你*確實*讀*錯誤信息?那麼這很難理解呢? –
對不起,我有學習障礙,所以有時候我很難學習編程。謝謝你的鏈接 – cakebug