Имена maxValue()
и max
вводят в заблуждение и сбивают с толку то, что вы пытаетесь сделать.lastValue()
и last
будет иметь гораздо больше смысла.
Однако то, что вы пытаетесь сделать, не имеет смысла в C, поскольку массивы имеют известную длину, поэтому вы можете получить доступ к последнему элементу напрямую:
int array1[] = { 11, 88, 5, 9, 447, 8, 68, 4 };
int array_length = sizeof(array1) / sizeof(*array1) ;
printf("Lastvalue: %d \n", array1[array_length - 1] ) ;
Однако вы не можете сделать это в функции, потому что массивы не являются типами данных первого класса в C, и при передаче в функцию «ухудшаются» до простого указателя без какой-либо информации о размере указанного массива.Вызывающая функция, имеющая информацию о размере, тоже должна это передать (как вы это сделали, но потом, похоже, очень запутались):
void printLast( int* array, int length )
{
printf( "Lastvalue: %d \n", array1[length - 1] ) ;
}
Трудно понять, почему вы подумали, что вам может понадобиться какой-либо другой код илидля чего предназначена ваша maxValue()
функция.Таким образом, «логика», которую вы говорите «должен работать»:
Если значение первого элемента массива меньше значения последнего элемента массива, выведите undefined значение один за концом массива;в противном случае выведите первый элемент массива.
Если вы хотите напечатать последний элемент, то просто напечатаете его, значение первого элемента не имеет к нему никакого отношения.В любом случае вы не должны индексировать после конца массива - это значение не определено.