为什么不是没有返回的最高元素?

时间:2015-02-28 21:40:30

标签: c pointers reference dereference

我刚刚学习了指针并且遇到了这个程序的问题。我的int函数返回数组的第一个元素而不返回最高元素。我认为我正在调用错误的声明以获得正确的元素,但我不确定这是否属实。如果大小等于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;
    }
}
}

1 个答案:

答案 0 :(得分:1)

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

如果值不大于当前最大值,则返回NULL。这将在第一次迭代中发生。

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

return maximun
循环后

您还应该删除条件

size != 0

因为它总是成立:如果大小为0或更小,循环将永远不会执行,因为它的结束条件。