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

void retorna_algo(int size, int* destino){
  if (size == 1){
    *destino = 1;
  } else if (size == 3) {
    memcpy(destino, (int[]){1, 2, 3}, 3*sizeof(int));
  }
}

int main(void) {
  int *ponteiro;

  ponteiro = malloc(sizeof(int));
  retorna_algo(1, ponteiro);
  printf("%d\n", *ponteiro); // Escreve "1" - como esperado

  ponteiro = realloc(ponteiro, sizeof(int)*3);
  retorna_algo(3, ponteiro);

  printf("%d | %d | %d\n", ponteiro[0], ponteiro[1], ponteiro[2]);
  // Escreve "1 | 0 | 0", basicamente mantendo o valor zerado do malloc e realloc

  return 0;
}