dervish_candela
а почему это «не очень правильно»?
Что-то сходу я не нашёл материалов по данной теме, но мне представляется так. Когда вызывается какая-то функция, то в стеке выделяется память для адреса возврата, аргументов (в том числе и для возвращаемого значения), локальных данных и т.п. И эта память будет выделена до конца работы функции.
Если учесть, что мы уже приготовили память для возвращаемого значения (для структуры), то получится избыточное использование памяти. Иногда это “спички”, но в случае со структурами это может быть не очень оптимально.
Возможно, лучше было бы, чтобы функция выделила память в куче и вернула указатель. Но тут будет возня с управлением памятью…
Как-то так. Но лучше бы найти информацию в более надёжном источнике. Возможно, мои представления устарели. Пока я нашёл только это:
http://ru.wikipedia.org/wiki/Стековый_кадр