Wie kann ich mehr als einen Wert durch die Funktion in C zurückgeben?

7

Ich wurde in einem Interview gefragt, wie man mehr als einen Wert aus der Funktion zurückgeben kann. Ich habe geantwortet, indem ich Zeiger benutze, die wir in C erreichen können. Dann sagte er mir, er suche nach einer anderen Möglichkeit, mehr als einen Wert zurückzugeben. Ich sagte, wir können ein struct-Objekt zurückgeben, aber auch hier schien er nicht beeindruckt zu sein.

Ich möchte andere Möglichkeiten kennenlernen, mehr als einen Wert von einer Funktion zurückzugeben.

Ich habe gesehen, dass diese Fragen hier auf SO gestellt wurden, aber ich konnte nichts C-spezifisches finden.

    
Amit Singh Tomar 24.11.2011, 07:27
quelle

5 Antworten

27

Das knifflige Problem ist, dass der Interviewer eine Lösung hat, mit der er besonders glücklich ist, und er bewertet Sie wahrscheinlich, ob Sie denselben cleveren Trick haben oder nicht.

Du könntest nur ein paar Wege nennen, wie du es getan hast, und immer noch nicht auf ihren geheimen Trick hereinfallen. Und wenn du ihren geheimen Trick wüsstest, könnte dich das nicht beeindrucken.

Also in diesen Situationen, um es vom Interview in die Konversation zu verwandeln. Sobald du feststellst, dass du dich nicht auf ihr Ego zubewegst, kannst du es vermeiden, auf das einschüchternde "Ich weiß nicht", "Ich gebe auf" zu zusteuern und stattdessen das "Du hast eine clevere Lösung?" Hausrezept dafür bei Xyz Inc? " usw.

Jeder Blick auf ihre offensichtlich selbstbeeindruckte Lösung und du bist wieder auf festem Boden, wo du darüber reden und sie fragen kannst, ob sie über verschiedene Faktoren nachgedacht haben, die ihnen in den Sinn kommen und sie im Grunde interviewen.

Jeder liebt einen guten Zuhörer, und sie dazu zu bringen, über ihre Tricks zu sprechen, ist ein guter Weg, um sie dazu zu bringen, das Interview zu verlassen, das von Ihnen beeindruckt ist! ;)

    
Will 24.11.2011, 07:38
quelle
1

Es gibt mehrere Möglichkeiten:

  1. Rückgabewert mit der return-Anweisung (wie Sie bereits wissen)
  2. Rückgabe über Referenzen.
  3. Gibt Werte über den Heap zurück.
  4. Gibt Werte über globale Variablen zurück.
MByD 24.11.2011 07:36
quelle
1

Das hängt davon ab, was Sie als Wert betrachten . Wenn ein Wert eine Information für Sie ist, kann more values ​​ eine Struktur von Werten sein. Weitere Werte können auch über Zeiger oder Arrays übergeben werden, sogar ein char* enthält eine Liste von (nicht null alphanumerischen) Werten . Wenn Sie einen Wert als etwas Information betrachten, kann ein einzelnes zurückgegebenes uint32_t 32 Werte enthalten. Du könntest sogar mit Signalen oder Sockeln oder Rohren oder Dateien herumspielen.

Aber Sie kennen nicht einmal den Anwendungsfall und die Anforderungen, die er an die Lösung stellt, es ist in der Tat eine ziemlich schwierige Aufgabe, die richtige Lösung zu finden (und Sie haben es tatsächlich getan) haben einige richtige Lösungen ...).

    
moooeeeep 24.11.2011 10:06
quelle
0

Geben Sie einen Zeiger auf eine Struktur zurück oder packen Sie mehrere kleine Datentypen in einen großen Datentyp oder verwenden Sie globale Variablen.
Der erste ist wahrscheinlich der sauberste Weg, um es zu tun, die anderen beiden können ihre Verwendung in bestimmten Situationen haben.

Wenn wir die Adresse anstelle des wahren Werts der Parameter übergeben.
Dann, wenn wir diese Parameter beziehen, tun wir es mit der Adresse.

    
Gouse Moinuddin Shaik 24.11.2011 07:44
quelle
0

Ein Zeiger auf die Struktur ist die geeignete Antwort. (Natürlich kann das Ziel des Programms entscheiden, was das Beste ist, was getan werden kann). Der Interviewer hätte vielleicht gewünscht, dass Sie "Ich weiß nicht" sagen, was Ihr mangelndes Vertrauen in diesem Bereich gezeigt hätte. Ich denke, du hast gute Lösungen geliefert, aber nicht das, was er in seinem Kopf hatte. Sie hätten ihn nach einem typischen Szenario fragen können, in dem er mehrere Werte zurückgeben wollte, und dann diskutieren, wie struct-pointer eine sinnvolle Alternative ist.

    
Anurag Priyadarshi 01.02.2013 09:31
quelle

Tags und Links