Как найти индекс минимального элемента массива с помощью указателя? - C (СИ)
Формулировка задачи:
Подскажите, пожалуйста, как можно найти индекс минимального элемента массива с помощью указателя?
Решение задачи: «Как найти индекс минимального элемента массива с помощью указателя?»
textual
Листинг программы
#include <stdio.h>
int main()
{
int v[] = { 3, 5, 4, 1, 8, 9 };
size_t n = sizeof(v)/sizeof(v[0]); // длина массива
int *pMin = v; // указатель на минимальный элемент
// v и &v[0] - одно и то же, то есть указатель на начало массива
for (int *p = v; p != v+n; ++p)
{
if (*p < *pMin)
pMin = p;
}
int minIndex = pMin-v; // используем арфиметику указателей
printf("Index of min element = %d\n", minIndex);
return 0;
}
Объяснение кода листинга программы
- Подключение стандартной библиотеки.
- Объявление массива
vс элементами: 3, 5, 4, 1, 8, 9. - Вычисление длины массива с помощью оператора
sizeof. - Объявление указателя
pMinна первый элемент массиваv. - Проверка каждого элемента массива, начиная со второго, на предмет того, является ли он меньше текущего минимального значения.
- Если текущий элемент меньше, то он становится новым минимальным значением, а указатель
pMinобновляется соответствующим образом. - Вычисление индекса минимального элемента с использованием арфиметики указателей.
- Вывод индекса минимального элемента на экран.
- Возврат 0, чтобы указать на успешное выполнение программы.