Mehrere Werte aus einer C-Funktion zurückgeben

Wichtig: Bitte sehen Sie diese sehr verwandte Frage:Mehrere Werte in C ++ zurückgeben.

Ich bin danach, wie man das gleiche in ANSI C macht? Würden Sie eine Struktur verwenden oder die Adressen der Parameter in der Funktion übergeben? Ich bin auf der Suche nach extrem effizientem (schnellem) Code (Zeit und Raum), auch auf Kosten der Lesbarkeit.

BEARBEITEN: Danke für alle Antworten. Ok, ich glaube, ich verdanke eine Erklärung: Ich schreibe dieses Buch über eine bestimmte Untergruppe von Algorithmen für eine bestimmte Domäne. Ich habe mir das willkürliche Ziel gesetzt, die effizientesten (zeitlichen und räumlichen) Implementierungen für alle meine Algen im Web zu erstellen, auf Kosten der Lesbarkeit und anderer Dinge. Das liegt zum Teil in der Natur meiner (allgemeinen) Frage.

Antworten: Ich hoffe, dass ich das klarstellen kann, von (möglicherweise) schnellstem zu gewöhnlichem Sinn (all dies a priori, d. H. Ohne Prüfung):

Speichern Sie Outvalues ​​in globalem Objekt (ich würde so etwas wie Outvals annehmen [2]?) OderÜbergeben Sie in der Funktion outvalues ​​als Parameter (foo (int in, int * out1, int * out2)) oderRückgabe einer Struktur mit beiden Outvals oder(3) nur wenn die Werte semantisch zusammenhängen.

Macht das Sinn? Wenn ja, denke ich, ist Jasons Antwort die nächste, auch wenn sie alle einen Teil des "Puzzles" liefern. Robert geht es gut, aber zur Zeit ist Semantik nicht das, wonach ich suche (obwohl sein Rat gebührend vermerkt ist)

Danke euch allen.

Antworten auf die Frage(11)

Ihre Antwort auf die Frage