How to write a function that returns an array?

PeterH:
The return statement does a shallow copy of the struct (including the content of the array) into the return stack frame, and then as the call completes the return value is copied from the stack frame to the myName variable.

All I am saying is that in the example code just above no copying at all takes place. There is one instance "n_Name" which resides in the caller. The called function gets it by reference, no copying in, no copying out. Just the one piece of memory.