Wie zwei Werte in C zurückgegeben werden

7

Ich habe folgende Funktion:

%Vor%

Bei Verwendung in einer anderen Funktion erhalte ich mehrere Fehlermeldungen:

%Vor%

Wie auch immer, gibt es einen Weg, wo man zwei Werte von einer Funktion zurückgeben kann. Diese zwei Werte könnten durch irgendetwas: ein int und ein char , ein float und ein int ...

Es tut mir leid, wenn das ein Kinderspiel für dich ist, aber ich bin ein Anfänger in C und der einzige Weg, den ich lernen kann, ist, Fragen zu stellen. Bitte machen Sie auch Ihre Erklärung so einfach wie möglich.

Update: Dies kann leicht durch Zeiger wie folgt erreicht werden.

%Vor%

Später würden Sie diese Funktion wie folgt aufrufen:

%Vor%

Dies würde die Zeit in Sekunden der Variablen minutes zuweisen und Sekunden der Variablen secs

zuweisen     
Andy_A̷n̷d̷y̷ 30.12.2013, 10:38
quelle

6 Antworten

18

Zwei Möglichkeiten:

1) Übergeben Sie Zeiger auf die Variablen, die geändert werden. Ihr Funktionsprototyp wird dann

%Vor%

2) Verwende ein struct mit minutes und seconds als Mitglieder und gib das zurück.

Ich bevorzuge (1) wie im Fall von (2) bin ich immer besorgt darüber, unnötige Wertkopien zu nehmen, und ich werde nervös, wenn ich mich auf Rückgabewert-Optimierung als im Wesentlichen eine Compiler-Wahl und nicht von Standard C vorgeschrieben. Auch die Aufrufersyntax comMS(time_in_seconds, &minutes, &seconds) sagt mir zu erwarten minutes und seconds zu ändern.

Einige Konvention ist auch mit Option (1) gewachsen: ein Null-Ergebnis zeigt normalerweise Erfolg, nicht Null für einen Fehler.

    
Bathsheba 30.12.2013, 10:41
quelle
9

Sie können struct erstellen und es zurückgeben

%Vor%     
dzielins42 30.12.2013 10:42
quelle
7

Sie können Zeiger verwenden ..

%Vor%

Sie können es so nennen ...

%Vor%     
bgamlath 30.12.2013 10:42
quelle
3

Verwenden Sie eine Struktur, um Minuten und Sekunden zu enthalten, und geben Sie die Struktur zurück.

%Vor%     
Adithya 30.12.2013 10:44
quelle
3

Sie können nicht return 2 Werte von einer Funktion gleichzeitig eingeben. Sie können diese Werte in eine Struktur und return wie folgt setzen:

%Vor%     
user1814023 30.12.2013 10:39
quelle
2

deklarieren Sie eine Struktur mit Variablen gemäß Ihrer Anforderung und geben Sie ein Objekt dieser Struktur zurück.

%Vor%

obj.minutes & amp; obj.seconds sind deine Variablen.

    
Javed 30.12.2013 10:58
quelle

Tags und Links