fork download
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. void retorna_algo(int size, int* destino){
  5. if (size == 1){
  6. *destino = 1;
  7. } else if (size == 3) {
  8. memcpy(destino, (int[]){1, 2, 3}, 3*sizeof(int));
  9. }
  10. }
  11.  
  12. int main(void) {
  13. int *ponteiro;
  14.  
  15. ponteiro = malloc(sizeof(int));
  16. retorna_algo(1, ponteiro);
  17. printf("%d\n", *ponteiro); // Escreve "1" - como esperado
  18.  
  19. ponteiro = realloc(ponteiro, sizeof(int)*3);
  20. retorna_algo(3, ponteiro);
  21.  
  22. printf("%d | %d | %d\n", ponteiro[0], ponteiro[1], ponteiro[2]);
  23. // Escreve "1 | 0 | 0", basicamente mantendo o valor zerado do malloc e realloc
  24.  
  25. return 0;
  26. }
Success #stdin #stdout 0s 4388KB
stdin
Standard input is empty
stdout
1
1 | 2 | 3