Как преобразовать массив stati c в массив Dynami c в c? - PullRequest
0 голосов
/ 24 апреля 2020

Предположим, скажем, у меня есть массив c

int a[10];

В какой-то момент программа, которую я хочу вставить 11-й элемент. Так что она выдаст ошибку, так как индекс выйдет из диапазона ошибки.

Итак, я хочу создать динамический c массив a[]. без изменения массива stati c. И я хочу получить больше входных данных для массива a[] во время выполнения (означает масштабируемость).

Ответы [ 2 ]

4 голосов
/ 24 апреля 2020

Заменить int a[10]; на int *a = malloc(10 * sizeof(int));. Если вы хотите расширить его до 11 элементов, выполните a = realloc(a, 11 * sizeof(int));. Если любая из двух предыдущих функций возвращает значение null, значит, вам не хватило памяти, и вы должны рассматривать ее как ошибку. Наконец, там, где ваш исходный массив вышел бы из области видимости, поместите free(a);.

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

Я не думаю, что вы можете увеличить размер массива статически в C.

Когда дело доходит до стати c - мы не может динамически увеличивать размер массива, так как мы определим его размер явно во время самого объявления. Однако вы можете сделать это динамически во время выполнения, используя reallo c () в заголовке stdlib.h. но когда вы создаете массив динамически, используя mallo c ().

Типичный ответ в этой ситуации - выделить новый массив большего размера и скопировать существующие элементы из старого массива. , затем освободите старый массив.
Существуют некоторые ресурсы, которые могут помочь вам понять это. здесь

...