Retornando vários valores de uma função C

Importante: Por favor, veja esta questão muito relacionada:Retornar vários valores em C ++.

Eu estou depois de como fazer a mesma coisa em ANSI C? Você usaria uma estrutura ou passaria os endereços dos parâmetros na função? Estou atrás de um código (rápido e eficiente) extremamente eficiente, mesmo ao custo da legibilidade.

EDITAR: Obrigado por todas as respostas. Ok, acho que devo alguma explicação: estou escrevendo este livro sobre um certo subconjunto de algoritmos para um domínio em particular. Eu estabeleci a mim mesmo o objetivo arbitrário de fazer as implementações mais eficientes (tempo e espaço) para todos os meus algos para colocar na web, ao custo de legibilidade e outras coisas. Essa é em parte a natureza da minha questão (geral).

Responda: Eu espero que eu entenda isso de (possivelmente) mais rápido para mais comum-sensorial (tudo isso a priori, ou seja, sem teste):

Armazenar outvalues ​​no objeto global (eu assumiria algo como outvals [2]?), OuTransmitir valores de saída como parâmetros na função (foo (int in, int * out1, int * out2)) oudevolve uma estrutura com ambos os outvals, ou(3) somente se os valores estiverem relacionados semanticamente.

Isso faz sentido? Se assim for, acho que a resposta de Jason é a mais próxima, apesar de todos fornecerem alguma parte do "quebra-cabeça". Robert está bem, mas neste momento a semântica não é o que eu estou procurando (embora seu conselho seja devidamente anotado)

Obrigado a todos.

questionAnswers(11)

yourAnswerToTheQuestion