C return of local variable and wrong expected arguments for 4x4 matrix

I'm having a few problems to understandU/implement something small with pointers in c.
I'm having a 4x4 matrix and i want to transpose it. Its implementation is already working. but know i want to but the logic into methods to make it more fancy.

char arr[4][4] = { //filled }
printArray(arr)

The first code part only prints the array as i formated it and its working perfectly.

char matrixTranspose(char array[4][4]) {

char new_array[4][4];

// logic

return new_array;
}

So know I want to get back the the transposed matrix but I'm always getting back the warnings:

without a cast [enabled by default] note: expected 'char (*)[4]' but
argument is of type 'char'

So my question is, why does it have to be a pointer and when do i use the pointer ? I jsut want to overgive the variable the whole way, transpose it give it back and print it, do i need pointes? thanks for any help.