Массив полностью вернуть из функции нельзя. Можно напрямую работать с массивом через указатели, тогда необходимость возвращать что-нибудь отпадает. Само имя массива по сути дела - всего лишь указатель.
Пример
Код:
#include<stdio.h>
void copy(int *b, int *c);
void main(){
int b[5]={0,1,2,3,4};
int c[5];
int i;
copy(b,c);
for(i=0;i<5;i++)
printf("%d\n", c[i]);
}
void copy(int *b, int *c){
int i;
for(i=0;i<5;i++)
*(c+i)=*(b+i);}