Возврат нескольких значений из функции C

Важны: Пожалуйста, посмотрите этот очень связанный вопрос: Возврат нескольких значений в C ++.

Я хочу узнать, как сделать то же самое в ANSI C? Вы бы использовали struct или передали адреса параметров в функции? Мне нужен чрезвычайно эффективный (быстрый) код (время и пространство), даже ценой читабельности.

РЕДАКТИРОВАТ: Спасибо за ответы на все вопросы. Хорошо, я думаю, что должен кое-что объяснить: я пишу эту книгу об определенном подмножестве алгоритмов для определенной области. Я поставил перед собой совершенно произвольную цель создания наиболее эффективных (временных и пространственных) реализаций для всех моих алгоритмов, размещаемых в сети, за счет читабельности и прочего. Это отчасти характер моего (общего) вопроса.

Отве: Я надеюсь, что получу это прямо, от (возможно) быстрее всего к более здравому смыслу (все это априори, то есть без тестирования):

Сохранять значения в глобальном объекте (я бы предположил что-то вроде outvals [2]?) Или Передать значения в виде параметров в функции (foo (int in, int * out1, int * out2)) или вернуть структуру с обоими выходами или (3) только если значения семантически связаны.

Имеет ли это смысл? Если так, то я думаю, что ответ Джейсона - самый близкий, хотя все они обеспечивают некоторую часть «загадки». У Роберта все в порядке, но в настоящее время семантика - не то, что мне нужно (хотя его совет должным образом отмечен)

Спасибо вам всем

Ответы на вопрос(11)

Ваш ответ на вопрос