Я только что узнал о указателях и проблемах с этой программой. Моя функция int возвращает первый элемент массива и не возвращает наивысший элемент. Я думаю, что я вызываю неправильное объявление, чтобы получить правильный элемент в основном, но я не уверен, что это правда. И что будет делать NULL, если размер равен 0? Это моя программа до сих пор:Почему не самый высокий элемент не возвращается?
#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;
}
}
}
Как вы ожидаете, что он «вернет» что-либо, когда вы назовете «maxval (массив, размер)» и полностью * проигнорируете * его возвращаемое значение ??? Вы устанавливаете 'arrPtr', чтобы указать на первый элемент массива, и вы никогда его не меняете. Неудивительно, что ваш код всегда печатает первый элемент. – AnT
Ваш алгоритм неверен, а не о указателях. Вы возвращаете NULL на первой итерации. – farukdgn