Ошибка сегментации для массива в C

#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)