为什么最高元素不返回?
Why isn't the highest element not returning?
我刚刚了解了指针并且在使用这个程序时遇到了问题。我的 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。这将在第一次迭代中发生。
您应该删除循环中的两个 returns,并添加:
return maximun
循环后。
您还应该删除条件
size != 0
因为它将始终为真:如果大小为 0 或更小,则循环将永远不会执行,因为它的结束条件。
我刚刚了解了指针并且在使用这个程序时遇到了问题。我的 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。这将在第一次迭代中发生。
您应该删除循环中的两个 returns,并添加:
return maximun
循环后。
您还应该删除条件
size != 0
因为它将始终为真:如果大小为 0 或更小,则循环将永远不会执行,因为它的结束条件。