Я бы сказал, что нет предпочтительного метода, все зависит от того, что вы собираетесь делать с ответом. Если результаты будут использоваться вместе в дальнейшей обработке, тогда структуры имеют смысл, если бы я не стал передавать их в качестве отдельных ссылок, если бы функция не использовалась в составном заявлении:
x = divide( x, y, z ) + divide( a, b, c );
Я часто предпочитаю передавать «внешние структуры» по ссылке в списке параметров, вместо того, чтобы иметь пропуск накладных расходов на копирование новой структуры (но это потение малым материалом).
void divide(int dividend, int divisor, Answer &ans)
Изменились ли параметры? Параметр, отправленный как ссылка, указывает на то, что значение изменится (в отличие от ссылки на константу). Разумное именование также устраняет путаницу.