You are not actually dereferencing anything, the *
is part of the return type.
The compiler doesn't really care about where you place the *
, so your code is equivalent to writing
char* func() { }
In other words it means that func() returns a char pointer.