In the statement return arr;, arr will decay to pointer to an array of 10 chars, i.e. of type char (*)[10] while return type of your function is char **. Both pointer types are incompatible.
You can change the type of arr in the declaration from array of arrays to array of pointers.
static char *arr[10]*arr[3] = {"hi", "bye", "cry"};
or you can change the return type of the function to char (*)[10]
char (*func())[10] {...}