c++ - 当数组的第一个元素最高时,Findmax() 方法返回第二高的值

标签 c++ pointers max

此 findMax 函数仅在数组位于第一个索引以外的某个索引处时才返回数组中的最大值。我不明白为什么,因为我的具有几乎相同代码的 findMin 函数工作得非常好。

void findMax(int array[5])
{
    maximum = array; 
    for (i = 0; i < 5; i++)
    {
    if (*(array+i) > *maximum)
        *maximum = *(array+i);
    }
    cout<<"Maximum element in the array is "<< *maximum << "\n" ;
}

这是我的 findMin 乐趣,运行良好。

void findMin(int array[5])
{
    minimum = array;    
    for (i = 0; i < 5; i++)
    {
    if (*(array+i) < *minimum)
        *minimum = *(array+i);
    }
    cout<<"Minimum element in the array is "<< *minimum <<"\n";
}

最佳答案

其他答案已经描述了如何在 C++ 中更干净地执行此操作。但要指出实际的错误:它在这一行中。

    *maximum = *(array+i);

您并没有将maximum 指针重新分配给指向 最大元素,而是您从不更改指针,而是更改数组中的值maximum 指向(即 array[0])。你的意思是:

    maximum = array + i;

同样的问题也存在于您的 findMin 函数中。

关于c++ - 当数组的第一个元素最高时,Findmax() 方法返回第二高的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58889987/

相关文章:

c - 为什么我的数组在 C 中返回错误的值?

字符串指针数组中的 C char qsort

java - 如何在java中打印数组中的多个最大值

c++ - INFO 解析器,属性树 - 我如何根据单个键收集所有值

c++ - 如何在 cpp 中使用 libxml2 创建 DOM

c++ - 在画家程序中实现撤消重做

c - 如何正确使用数组下标表示法?

sql - 加入包含前一个最大值的列

MySql - 从最大内例中排除默认日期

c++ - BLAS 是如何获得如此极致的性能的?