返回数组中最大元素地址的函数

Function returning an address of the greatest element in the array

本文关键字:地址 函数 元素 数组 返回      更新时间:2023-10-16

不知何故,这段代码不起作用,我得到垃圾数字作为结果。你们能看看吗?

float * greatest(float *elements,int length){
float max=elements[0];int index=0;
for (int i = 1; i < length; i++)
{
    if(max<elements[length]){
        max = elements[length];
        index = length;}
}
return &elements[index];
}
if(max<elements[length]){

将始终返回最后一个元素,因为长度永远不会改变。你想要

if(max<elements[i]){

除了索引错误(elements[length]而不是elements[i]),C++已经内置了它,无需重新发明轮子:

#include <algorithm>
//...
float * greatest(float *elements,int length){
    return max_element(elements, elements+length);
}

正确的形式是:

float * greatest(float *elements,int length){
float max=elements[0];int index=0;
for (int i = 1; i < length; i++)
{
    if(max<elements[i]){
        max = elements[i];
        index = i;}
}
return &elements[index];
}