C: return big structs by using a pointer as a first argument