我試圖理解 c 中的指標,所以我創建了一個函式,它接受一個陣列和該陣列的長度并列印出該陣列的最小值和最大值,但是,它總是只列印該陣列中的最后一個元素最小和最大,我逐行瀏覽了我的代碼,但我仍然不明白這種行為的原因,請你幫助理解和修復我的代碼,謝謝。
void getMinAndMax(int numbers[], int length)
{
int *min = &numbers[0];
int *max = &numbers[0];
cout << length << endl;
for (int i = 1; i < length; i )
{
if (*min > numbers[i])
{
*min = numbers[i];
}
if (*max < numbers[i])
{
*max = numbers[i];
}
}
cout << "min: " << *min << endl;
cout << "max: " << *max << endl;
}
uj5u.com熱心網友回復:
因為,您在 if 條件中使用了取消參考運算子。您基本上是在更改指標指向的記憶體位置的值(在本例中為陣列的第 0 個索引)。在 if 條件中應該做的是存盤存在最小值和最大值的索引。像這樣
if (*min > numbers[i])
{
min = &numbers[i];
}
這樣,指標將保存最大值和最小值的地址,當您取消參考它們時,您將得到正確的答案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/446144.html
上一篇:我的輔助函式回傳一個空字串
下一篇:預期'constGLchar*const*'{aka'constchar*const*'}但引數的型別是'char**'
