Devolviendo múltiples valores desde una función C

Importante: Por favor vea esta pregunta muy relacionada:Devuelve múltiples valores en C ++.

Estoy buscando cómo hacer lo mismo en ANSI C? ¿Usaría una estructura o pasaría las direcciones de los parámetros en la función? Estoy buscando un código (tiempo y espacio) extremadamente eficiente (rápido), incluso a costa de la legibilidad.

EDITAR: Gracias por todas las respuestas. Ok, creo que debo una explicación: estoy escribiendo este libro sobre un cierto subconjunto de algoritmos para un dominio en particular. Me he fijado el objetivo bastante arbitrario de hacer las implementaciones más eficientes (tiempo y espacio) para todos mis algos para poner en la web, a costa de la legibilidad y otras cosas. Esa es en parte la naturaleza de mi pregunta (general).

Responder: Espero entender esto, desde (posiblemente) más rápido hasta más sensitivo (todo esto a priori, es decir, sin pruebas):

Almacenar valores externos en un objeto global (¿asumiría algo como valores externos [2]?), OPase valores de salida como parámetros en la función (foo (int in, int * out1, int * out2)), odevuelve una estructura con ambas salidas, o(3) solo si los valores están relacionados semánticamente.

¿Esto tiene sentido? Si es así, creo que la respuesta de Jason es la más cercana, a pesar de que todos proporcionan alguna pieza del "rompecabezas". La de Robert está bien, pero en este momento la semántica no es lo que busco (aunque se toma nota de su consejo)

Gracias a todos.

Respuestas a la pregunta(11)

Su respuesta a la pregunta