Создание динамического массива массивов с использованием указателей - PullRequest
1 голос
/ 29 сентября 2019

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

1
11
121
1331
14641
...
...

Это в основном массив длины N, который имеет в каждом индексе массив i+1.

Какточно мы это настроим?

Я немного попробовал с помощью указателей.

Я настроил массив указателей, таких как:

int *arr[N];

Тогда янужен указатель i для указания на массив i+1, поэтому я сделал:

int *i = 0;
    for(int j = 0; j < N; j++){
        int numArr[j+1];
        arr[*i] = numArr;
        *i++;
    }

Собираюсь ли я в этом направлении? Потому что я считаю, что я должен выделить память для этого, поскольку я должен использовать free() позже. Буду ли я использовать malloc() для каждой инициализации массива?

1 Ответ

1 голос
/ 30 сентября 2019

Код можно сделать чрезвычайно простым, если вы знаете, что делаете:

int *arr = malloc(N * sizeof(int*));
int i;
for (i = 0; i < N; ++i) {
    arr[i] = malloc(sizeof(int) * (i + 1));
}

Конечно, вам понадобятся соответствующие вызовы, чтобы free() дальше по линии, например, так:

for (i = 0; i < N; ++i) {
    free(arr[i]);
}
free(arr);
...