L'array deve essere passato tramite puntatore.

L'array, se definito internamente alla funzione, deve essere statico; altrimenti allocato dalla funzione chiamante.

Oppure deve essere allocato dinamicamente in memoria.

Quindi

codice:
int *funzione(void)
{
  static int a[3];

  a[0]=111;
  a[1]=222;
  a[2]=333;

  return(a);
}


void main(void)
{
  int *a;
	
  a=funzione();

  printf("valore di a[0] %d\n", a[0]);
  printf("valore di a[1] %d\n", a[1]);
  printf("valore di a[2] %d\n", a[2]);
}