выделение памяти для массива переменной длины - PullRequest
0 голосов
/ 12 апреля 2020

Я хочу, чтобы длина этого массива принималась пользователем. пусть n будет введенной длиной; когда я использую mallo c: int *arr1[n] = malloc((sizeof(int) * n) + 1);, он говорит, что массив переменного размера не может быть инициализирован, есть ли другой способ сделать это?

Я хочу взять массив в качестве ввода от пользователя, отсортировать элементы массива и сохранить отсортированные элементы в другом массиве. Вот мой полный код:

#include <stdio.h>
#include <stdlib.h>

void swap(int *a, int *b)
{    
    int temp = 0;
    temp = *a;
    *a = *b;
    *b = temp;
}

int main(void)
{    
    int n = 0;
    printf("Enter the number of elements - ");
    scanf("%i", &n);
    int *arr1[n];
    int arr2[] = malloc((sizeof(int) * n) + 1);
    printf("Enter the elements one by one - ");
    for (int i = 0; i < n; i++)
    {
        scanf("%i", arr1[i]);
    }
    free(arr2);
}

Я не объявлял второй массив как arr2 [n], так как n является переменной, и он не позволит мне инициализировать массив с помощью mallo c. Может кто-нибудь помочь мне с этим?

1 Ответ

0 голосов
/ 12 апреля 2020

Нет другого способа сделать это, но есть правильный способ:

Вы хотите это:

int arr1[n];
int *arr2 = malloc((sizeof(int) * n) + 1);
...
scanf("%i", &arr1[i]);
...