typedef struct person_ {
  // Hmmmm, not good enough to have fixed name sizes
  char first_name[20];
  char family_name[20];
} person ;

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

int main (){

  person *p;
  
  p = calloc(1, sizeof(person));  //can also e written sizeof(*p)

  strcpy(p[0].first_name, "John");
  strcpy(p[0].family_name, "Croft");

  printf("%s %s\n", p[0].first_name, p[0].family_name);

  p = realloc(p, (2)*sizeof(person));
  
  strcpy(p[1].first_name, "Bengt");
  strcpy(p[1].family_name, "Brylde");
  
  printf("%s %s\n", p[1].first_name, p[1].family_name);
  
  free(p);

  return 0;
}
