Почему у меня есть ошибка сегментации в этом программном коде на языке Си?
Я пытаюсь запрограммировать простую задачу слияния с языком Си.
но у меня все еще есть ошибка сегментации, и я застрял в ней. ПОЖАЛУЙСТА, ПОМОГИТЕ...!
Что я уже пробовал:
#include <stdio.h> #include <stdlib.h> void merge(int *arr, int start, int mid, int end) { int i, j, k; int arrsize=end-start+1; int sm_size=mid-start+1; int me_size=end-mid+1; for(i=0; i < arrsize; i++) { if(j < sm_size && k < me_size) if(*(arr+start+j) > *(arr+mid+k)) { *(arr+i) = *(arr+start+j); j++; } else { *(arr+i) = *(arr+mid+k); k++; } } else if(j
Richard MacCutchan
Ваш код неполон, но если вы посмотрите на то, что у вас есть выше, вы используете переменные i, j и k без их инициализации, так что это никогда не сработает.
Albert Holguin
Вы делаете так много арифметики указателей, что, скорее всего, выходите за рамки. Используйте отладчик или поставьте несколько операторов печати,чтобы выяснить, где вы выходите за пределы.