The auther here says "Output arguments are counterintuitive. Readers expect arguments to be inputs, not outputs." I disagree with this rule - what if the point of your function is to fill an argument with data? It's faster to fill an argument pointer than to return an entire struct.
// this seems fine to me - no issue here. void calculateMyValue(int arg1, int arg2, struct *result);