Изменение размеров массива с C

У меня должен быть массив структур в игре, которую я делаю - но я не хочу ограничивать массив фиксированным размером. Мне говорят, что существует способ использовать перевыделение для создания массива больше, когда это должно, но не может найти рабочие примеры этого.

Кто-то мог показать мне, как сделать это?

19
задан intcreator 17 February 2016 в 18:32
поделиться

2 ответа

Начните с создания массива:

structName ** sarray = (structName **) malloc(0 * sizeof(structName *));

Всегда следите за размером отдельно:

size_t sarray_len = 0;

Для увеличения или усечения:

sarray = (structName **) realloc(sarray, (sarray_len + offset) * sizeof(structName *));

Затем установите размер:

sarray_len += offset;

Рад помочь и надеюсь это поможет.

30
ответ дан 30 November 2019 в 02:38
поделиться

От http://www.cplusplus.com/reference/clibrary/cstdlib/realloc/

/* realloc example: rememb-o-matic */
#include <stdio.h>
#include <stdlib.h>

int main ()
{
  int input,n;
  int count=0;
  int * numbers = NULL;

  do {
     printf ("Enter an integer value (0 to end): ");
     scanf ("%d", &input);
     count++;
     numbers = (int*) realloc (numbers, count * sizeof(int));
     if (numbers==NULL)
       { puts ("Error (re)allocating memory"); exit (1); }
     numbers[count-1]=input;
  } while (input!=0);

  printf ("Numbers entered: ");
  for (n=0;n<count;n++) printf ("%d ",numbers[n]);
  free (numbers);

  return 0;
}
8
ответ дан 30 November 2019 в 02:38
поделиться
Другие вопросы по тегам:

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