#c #arrays
#c #массивы
Вопрос:
Мне нужно найти индекс самого большого элемента в массиве с помощью функции, и я продолжаю получать ошибку ошибки сегментации. Кто-нибудь может помочь?
#include <stdio.h>
int numberOfElements, index;
int main()
{
#define array_size 100
int array[array_size];
printf("The number of elements is:n");
scanf("%d", numberOfElements);
for( index=0; index< numberOfElements ; index )
{
printf("The elements are: n");
scanf("%d", amp;array[index]);
}
int largestElementOfTheArray = largest(array, numberOfElements);
printf("The largest element of the array is on position:%dn",
largestElementOfTheArray );
return 0;
}
int largest(int a[100], int n)
{
int max=0;
int indexOfLargest;
int index;
for(index = 0; index< n; index )
{
if(a[index] >= max)
{
max = a[index];
indexOfLargest = index;
}
}
return indexOfLargest;
}
Это мой код. Я не знаю, что я делаю не так.
Комментарии:
1. Сработало! Спасибо!
2. Причина, по которой это сработало, заключается в том, что ваш исходный код был объявлен
numberOfElements
со статической продолжительностью хранения без явного инициализатора , поэтому он был равен 0 . Вы передали значение 0 как есть ( UB ), хотя спецификатор преобразования%d
ожидает указатель на целое число со знаком. Теперь он, возможно, интерпретировал целочисленное значение 0 как указатель и попытался разыменовать и записать через него.3. Замените scanf(«%d», numberOfElements) на scanf(«%d», amp;numberOfElements)