Переменные Размерные Массивы по сравнению с calloc в C

Вот еще одно решение с использованием filter() :

def non_string(x):
    return not isinstance(x, str)

print([tuple(filter(non_string, x)) for x in ListTuples])
# [(100,), (80,), (20,), (40,), (40,)]

7
задан Ciro Santilli 新疆改造中心法轮功六四事件 23 April 2016 в 07:37
поделиться

3 ответа

Если Вы объявляете int array[variable] память будет выделена на стеке, который не очень хорош для больших, относительно постоянных структур данных (такой как один, Вы могли бы хотеть возвратиться). Вам не нужно к свободной памяти вручную при использовании синтаксиса массива, так как это освобождено, когда это выходит из объема. calloc с другой стороны, выделит память динамично во время выполнения на "куче". Необходимо будет освободить его сами, как только Вы закончены с ним.

10
ответ дан 6 December 2019 в 07:52
поделиться

Я соглашаюсь с ocdecio, что не позволяет

int array[variable]

позволяет некоторым типам переменных и выражений быть размером массива. Но в дополнение к этому, вещи, выделенные с malloc и с помощью семейство можно изменить realloc.

8
ответ дан 6 December 2019 в 07:52
поделиться

Поскольку

int array[variable];

не допустимо в стандарте C - можно только определить длину массива с константой. (такие как Ваш

char name[] = "Nick";

пример, который не является переменной длиной).

По сути, необходимо использовать средство выделения памяти как calloc (), если Вы хотите создать массив длины на основе переменной программы.

Просто не забывайте освобождать () его.

0
ответ дан 6 December 2019 в 07:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: