C/C++で、構造体を返す関数
struct hoge f(void) {}
は、実際には、最適化されて
void f(struct hoge *p) {}
と同様の処理になるのが殆ど。