¿Es posible asignar una matriz dentro de la función y devolverla usando una referencia?

He intentado usar un puntero triple, pero sigue fallando. Código:

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

int set(int *** list) {
  int count, i;
  printf("Enter number:\n");
  scanf("%d", &count);
  (*list) = (int **) malloc ( sizeof (int) * count);

  for ( i = 0; i<count;i++ ) {
    (**list)[count] = 123;
  }
  return count;
}

int main ( int argc, char ** argv )
{
  int ** list;
  int count;

  count = set(&list);

  return 0;
}

Gracias por cualquier consejo

Respuestas a la pregunta(3)

Su respuesta a la pregunta