well, an array is basically a pointer to an area in memory where a chain of variables of the same data type are stored. so, to answer your question, yes. you can. just return a pointer.
example:
int* functionThatReturnsIntArray(){
//allocating memory for the array dinamically (or you could just receive it as a parameter in your function)
int* array = (int) malloc (sizeof(int) * numberOfElementsInTheArray);
//process the array here
return array;
}