c - 为什么最高的元素没有返回?

标签 c pointers reference dereference

我刚刚了解了指针,并且在使用这个程序时遇到了问题。我的 int 函数返回数组的第一个元素,而不返回最高的元素。我认为我调用了错误的声明来获取 main 中的正确元素,但我不确定这是真的。如果大小等于 0,NULL 会做什么?这是我到目前为止的程序:

#include <iostream>
using namespace std;

int *maxval(int *, int );

int main()
{
const int size=20;
int array[size]={21,1,33,15,11,5,2,29,
33,56,4,44,9,12,19,23,22,35,7,13};
int *arrPtr;
arrPtr=array;

cout<<"The numbers in set are: ";
for(int i=0; i<size; i++)
{
    cout<<*(array+i)<<" ";
}
maxval(array, size);
cout<<endl;
cout<<"Maximum element is: "<< *arrPtr<<endl;
return 0;
}

int *maxval(int *arr, int size)
{
int *maximum=arr;
for(int i = 0; i<size; i++)
{
    if(arr[i] > *maximum || size != 0)
    {
        maximum=&arr[i];
        return maximum;
    }
    else
    {
        return NULL;
    }
}
}

最佳答案

if(arr[i] > *maximum || size != 0)
{
    maximum=&arr[i];
    return maximum;
}
else
{
    return NULL;
}

只要一个值不大于当前的最大值,您就会返回 NULL。这将在第一次迭代中发生。

您应该删除循环中的两个返回,并添加:

return maximun

循环之后。

您还应该删除条件

size != 0

因为它始终为真:如果 size 为 0 或更小,则由于其结束条件,循环将永远不会执行。

关于c - 为什么最高的元素没有返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28787263/

相关文章:

C++获取字节数组中字符串后的短数字

c - 双指针作为函数参数

c++ - 关于c++引用的问题

c++ - 从右值参数推导出对 const 的引用

c - 将二维数组分配给 void*

C 宏删除参数列表中的重复项

c - 分段故障错误(核心已转储)

将结构复制到函数 C 中的指针数组

c - C中的char string [LENGTH]和char * string [LEN]有什么区别

mongodb - Morphia 通过引用 ObjectID 查询