Передача динамического массива в функцию - C (СИ) (249645)

Узнай цену своей работы

Формулировка задачи:

Ох снова я пишу по поводу передачи массивов в функции... Что-то я так и не понял по какому принципу это все работает... Как передать функции два динамических массива и чтобы функция с первого динамического массива перенесла содержимое во второй массив? Начну с демонстрации кода: Это якобы не рабочая моя функция
int TryModifyArray (int *SORTED_M, int SIZE_M, int *RESULT_M, int *SIZE_R) {
        int size = SIZE_R;
        for (int i = 0 ; i < SIZE_M; ++ i) {
                size += 1;
                RESULT_M[size] = SORTED_M[i];
        }
        *SIZE_R = size;
        return RESULT_R;
}
А это main
int main (void) {
        int First_Massiv[100], Second_Massiv[100], *SORTED_MASSIV, S_SIZE = 0;
        SORTED_MASSIV = (int*)malloc(S_SIZE * sizeof(int));
 
        for (int i = 0; i < 100; ++ i) {
                First_Massiv[i] = rand() %100;
                Second_Massiv[i] = rand() %100;
        }
 
        printf(" MAIN: First_Massiv - > ");     Show_Massiv(First_Massiv);
        printf(" MAIN: Second_Massiv - > ");    Show_Massiv(Second_Massiv);
 
        int *RESULT_ARRAY, R_SIZE = 0;
        RESULT_ARRAY = (int*)malloc(R_SIZE * sizeof(int));
        SORTED_MASSIV = repElt(First_Massiv, 100, &S_SIZE);
 
        printf(" MAIN: S_SIZE - > %d \n", S_SIZE);
        printf(" MAIN: SORTED_MASSSIV - > ");
        for (int i = 0; i < S_SIZE; ++ i)
                printf("%d ", SORTED_MASSIV[i]);
        printf("\n\n");
 
        TryModifyArray(SORTED_MASSIV, S_SIZE, RESULT_ARRAY, &R_SIZE);
        printf(" MAIN: RESULT_ARRAY - > ");
        for (int i = 0; i < R_SIZE; ++ i)
                printf("%d ", RESULT_ARRAY[i]);
 
        printf("\n\n");
        free(SORTED_MASSIV);
        return(0);
}
Что не хватает?
Написал только что вот такую функцию, но при выполнении программы пишет "Ошибка сегментирования"
int TryModifyArray (int *SORTED_M, int SIZE_M, int *RESULT_M, int *SIZE_R) {
        int *Template_Massiv;
        int size = SIZE_R;
        Template_Massiv = (int*)calloc(SIZE_R, sizeof(int));
        for (int i = 0 ; i < SIZE_M; ++ i) {
                size += 1;
                RESULT_M[size] = SORTED_M[i];
        }
        *SIZE_R = size;
        Template_Massiv = (int*)realloc(Template_Massiv, sizeof(int) * size);
        return Template_Massiv;
}

Решение задачи: «Передача динамического массива в функцию»

textual
Листинг программы
int TryModifyArray (int **SORTED_M, int SIZE_M, int **RESULT_M, int *SIZE_R)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5
Похожие ответы