Hallo und herzlich willkommen.
In diesem Vortrag möchte ich sprechen über die Rückgabe von Daten von Funktionen.
Bis zu diesem Punkt wissen wir was Eine Funktion ist, dass wir wissen, warum sie nützlich ist.
Wir wissen, wie wir Funktionen definieren, die wir verwenden wissen, wie Daten an Funktionen übergeben werden.
Jetzt wollen wir darüber sprechen, wie wir kann Daten von Funktionen zurückgeben,
was ebenfalls sehr nützlich ist.
In unserem vorherigen Beispiel, wenn wir Multiplizieren Sie zwei Zahlen, eine Multiplikationsfunktion
zeigt die Ergebnisse von an die Berechnung am Terminal.
Denken Sie daran, wir hatten das printf Anweisung da drin.
Wir hatten auch ein Beispiel, wo wir waren nur eine einfache Funktion früher.
Wir haben gerade Daten ausgedruckt innerhalb der Funktion.
Wir wollten statt nett sein Bring es da raus, weil
es tatsächlich mehr als eine Sache tut.
Es hat es tatsächlich ausgedruckt, das Daten wurden zurückgegeben und
die Daten in der Hauptfunktion ausgedruckt.
Vielleicht möchten Sie das nicht immer haben Ergebnisse Ihre Berechnungen angezeigt.
Die Funktion wird mehr flexibler, allgemeiner, was wiederum
die Verwendung ermöglicht mehr, wenn Sie Daten zurückgeben können.
Funktionen können also Daten zurückgeben unter Verwendung einer bestimmten Syntax in c.
Wir sollten damit vertraut sein ein bisschen, weil
wir uns an unsere Hauptfunktion erinnern Am Ende geben wir in vielen Beispielen
ziemlich viele Daten zurück.
Wir waren dem also ein bisschen ausgesetzt.
Wir haben es einfach nicht wirklich getan verstanden, was es bedeutet.
Schauen wir uns das noch einmal an allgemeine Form einer Funktion.
Denken Sie daran, dieser Funktionsheader.
Wir hatten einen Rückgabetyp, der war das Wort, das zuerst definiert wurde.
Und dann hatten wir den Namen und dann Wir hatten die Parameter durch
Kommas in Klammern getrennt.
Wir kennen das schon Name und die Parameter.
Das erste ist der Rückgabetyp.
Der Rückgabetyp gibt an Der Datentyp des von der
Funktion zurückgegebenen Werts.
Funktionen können jede Art von Daten zurückgeben.
Sie müssen nur den Compiler informieren Welche Art von Daten geben Sie zurück, wenn.
Es ist ein Int, ein Float, ein Double Was auch immer es ist, Sie müssen dies
in Ihrem Funktionsheader angeben.
Der Rückgabetyp.
Der Rückgabetyp, den wir hier gesehen haben, und Sie können diesen Werttyp angeben, der von einer Funktion
zurückgegeben werden soll solange es sich um einen legalen Typ in c handelt.
Ich erwähnte die wichtigsten, verdoppeln, schweben und so weiter.
Sie können aber auch zurückkehren Aufzählungen und Zeiger.
Wir haben keine Hinweise besprochen, aber es macht es sehr, sehr flexibel, wenn
Sie Zeiger zurückgeben können.
Der Rückgabetyp kann Vermeiden Sie auch Typ.
Sie sehen oft, dass dieses Schlüsselwort nichtig ist.
Wir verstehen jetzt, was es bedeutet.
Nichtig bedeutet, dass keine Daten vorliegen wird zurückgegeben.
Wenn Sie vor dem Name der Funktion, Sie geben
keine Daten zurück.
Wenn Sie in den Parametern eine Leere sehen Liste, Sie übergeben keine Daten.
Void ist nur ein allgemeines Schlüsselwort dafür Bei Rückgabetypen und Parametern stellen Sie außerdem fest, dass Sie void verwenden können
als Zeiger auch, aber wir werden dazu kommen, wenn
wir dazu kommen.
Aber nichtig ist eine Art, nichts zu sagen.
Und der Grund, den Sie einschließen nichtig, anstatt einfach nichts
einzuschließen, weil es macht das Programm besser lesbar.
Eigentlich, wenn Sie Daten an a übergeben Funktion und Sie haben
keine Daten, die übergeben werden, können Sie haben Es sind nur leere Klammern.
Es ist leicht zu lesen, wenn Sie haben dort Leere.
Gleiches gilt für einen Rückgabetyp mit Ausnahme des Rückgabetyp muss ungültig sein.
Du kannst es nicht einfach leer haben.
Nichtig bedeutet, dass keine Daten vorhanden sind wird zurückgegeben werden.
Die return-Anweisung.
Wir haben darüber gesprochen, wie Sie können Identifizieren Sie, welche Daten zurückgegeben werden sollen, aber wie
Sie geben die Daten tatsächlich zurück.
Im Körper der Funktion, Sie müssen eine Erklärung haben, in der Sie sagen
können, was Sie zurückgeben werden.
Denn erinnere dich an den Körper eines Funktion kann viele Daten haben.
Es kann lokale Variablen haben, es kann Haben Sie etwas, von dem Sie wissen,
dass die Funktion eine bestimmte Berechnung durchführen könnte? Vielleicht machen Sie mehrere Berechnungen, was
möchten Sie zurückgeben.
Zum Glück gibt es diese Aussage mit dem Schlüsselwort return.
Wenn Sie die Rücksendung bereitstellen Ohne Variablennamen nach oder Ausdruck bedeutet dies,
dass Sie es sind einfach die Funktion verlassen.
Es ist ähnlich wie eine Unterbrechung in einer Schleife.
Du kommst gerade zurück von der Funktion.
Und Sie können dies in bereitstellen Funktionen, die als ungültig definiert sind.
Es macht deutlich, wann Sie verlassen die Funktion.
Das solltest du eigentlich nur haben die Rückkehr an einer Stelle am
unteren Rand der Funktion.
Wir werden später darauf zurückkommen, aber Sie kann es nirgendwo in einer Funktion haben.
Wenn Sie es irgendwo in sehen Eine Funktion bedeutet, dass Sie
aus dieser Funktion herausspringen.
Der Grund, warum es gut ist zu haben Unten ist es sehr klar,
wenn Sie die Funktion verlassen.
Wenn Sie mehrere Retouren haben Selbst wenn Sie während Ihrer gesamten Funktion Daten zurückgeben,
ist dies der Fall Schwer zu sagen, wenn Sie zurückkehren.
Also, was ich gerne in meinem mache Funktionen ist Variablen erstellen und
nur einmal unten zurückgeben.
Wenn ich etwas zurückgeben muss eine Funktion oder ich meine in einer bestimmten if-Anweisung in einer Funktion oder
Etwas, das ich die Variable setzen und dann
unten zurückgeben werde.
Also, wenn Sie zurückgekehrt sind und Sie Habe nichts
danach, das heißt nur, dass du das verlässt Funktion ohne zurückgegebene Daten.
Dies wird wirklich nicht so oft verwendet.
Sie verwenden es nur in der Leere Funktion, gibt keinen Wert zurück.
Die allgemeinere Form der Die return-Anweisung gibt eine Variable
oder einen Ausdruck zurück.
X plus y oder Rückgabe von x.
Diese Form der return-Anweisung hat Wird mit dem Rückgabetyp verwendet, der im
Funktionsheader angegeben ist.
Wenn Sie ein int zurückgeben, Was auch immer diese Variable oder dieser Ausdruck ist, den
Sie zurückgeben, muss ein int sein.
Es muss zu einem int ausgewertet werden, wenn Sie einen int zurückgeben.
Wenn Sie jetzt ein Doppel drehen, es muss einen Wert haben, um sich zu verdoppeln.
Denken Sie daran, Sie können viele haben verschiedene Arten von Daten zurückgegeben.
Der zurückgegebene Wert für das aufrufende Programm ist
der Wert, der sich ergibt, wenn die Ausdruck wird so ausgewertet.
Wenn Sie x plus y haben, kehrt es zurück das Ergebnis dieses Ausdrucks und es
muss der gleiche Typ sein wie der Funktionsdeklaration wie erwähnt.
Eine Funktion mit Anweisungen im Funktionskörper,
der aber keinen Wert zurückgibt, muss der Wert haben Rückgabetyp als ungültig, muss.
Das kannst du nicht nicht haben.
Wenn Sie das nicht haben und Sie sind Wenn Sie
keine Daten zurückgeben, wird eine Fehlermeldung angezeigt.
Wenn Sie das Programm kompilieren und es enthält eine Funktion mit einem
ungültigen Rückgabetyp, die dies versucht Gibt einen Wert-Compiler-Fehler zurück.
Void bedeutet keine Rückgabedaten, nicht wahr? Geben Sie einer Variablen einen Ausdruck zurück.
Wenn eine Funktion keine Leere hat Rückgabetyp und
es hat einen gültigen Rückgabetyp, Sie erhalten eine Fehlermeldung, wenn der Compiler
versucht, einen anderen Typ als zurückzugeben eine bestimmte oder wenn sie
gerade mit nichts danach zurückgekehrt sind.
Achten Sie also darauf.
Diese Schlüsselwörter am Anfang des Funktionsdeklaration sind wichtig.
Dies wirkt sich direkt auf die Implementierung aus der Funktion und der Kompilierung wird Ihnen sagen, ob Sie schrauben up und Sie
geben nicht die richtigen Daten zurück oder wenn
Sie keine zurückgeben Daten oder wenn Sie Daten zurückgeben, wenn Sie
keine Daten zurückgeben sollen.
Wenn der Ausdruck zu einem Wert führt Das ist ein anderer
Typ als der Rückgabetyp in der Funktion Header, c wird versuchen, es zu konvertieren.
Der Compiler wird es versuchen um es zu konvertieren, wenn es kann.
Also zum Beispiel, wenn Sie zurückkehren ein float und dein Ausdruck ist I plus x mit zwei
Ints, es geht um es einfach in einen Schwimmer umzuwandeln.
Wenn Sie ein int und zurückgeben Sie
haben einen Ausdruck, der die Float-Berechnung durchführt wird es in ein es konvertieren.
Sie werden dabei Daten verlieren Fall, aber es wird Konvertierung tun.
Das ist nicht immer möglich die Konvertierung durchführen.
In Fällen, in denen dies nicht möglich ist, Sie werden einen Fehler haben,
der vom Compiler erzeugt wird.
Wenn Sie versuchen, ein int zurückzugeben wenn Sie einen
String zurückgeben sollen oder wenn Sie es versuchen um es
zurückzugeben, wenn Sie eine Aufzählung zurückgeben sollen, ist es werde den Compiler beschweren.
Sie können auch mehr als eine haben return Anweisung eine Funktion, ich
habe dies kurz erwähnt und warum willst du es nicht tun
Aber du kannst es schaffen.
Sie können mehrere Retouren haben während der gesamten Funktion.
Es macht den Code nur schwieriger Folgen Sie, weil
Sie überall aus der Funktion herausspringen.
Wenn Sie zurückkehren und Sie haben Mehrere Rückgabewerte, stellen Sie einfach
erneut sicher, wenn Sie eine Funktion haben das gibt
etwas zurück, du hast einen Ausdruck oder einen Wert von dieser Typ oder es kann konvertiert werden.
Jetzt, wo wir darüber gesprochen haben Wenn wir Daten übergeben und Daten zurückgeben,
wissen wir, wie man eine Funktion aufruft. aber ich möchte noch ein
paar andere Dinge über die Anrufung sagen.
Sie rufen eine Funktion auf, indem Sie einfach verwenden Der Funktionsname, gefolgt
von den Argumenten, die Sie übergeben zwischen den Klammern wissen wir
das, soweit wir es wissen, aber ich Wenn Sie es formell angeben möchten, können
Sie eine Funktion aufrufen.
Wenn Sie die Funktion aufrufen, wird die
Werte der Argumente, die Sie in Klammern angeben werden Parametern
innerhalb der Funktion zugewiesen.
Die Parameter sind repräsentativ Variablen mit einem Datentyp.
Sie können diese Variable dann verwenden jede Seite im Funktionskörper.
Wenn die Funktion beendet oder ausgeführt wird In bestimmten Codes werden die angegebenen Werte als Argumente verwendet,
wie bereits erwähnt.
Die Argumente, die Sie angeben, wenn Sie Aufruf einer Funktion sollte
in Typnummer und Reihenfolge übereinstimmen, wenn die Parameter im Funktionsheader.
Ordnung ist auch wichtig, habe ich nicht betonen Sie das, aber wenn es
int x double y heißt, müssen Sie zuerst Geben Sie das Int und dann das Double ein.
Sie können nicht im Double und Int übergeben.
Die Reihenfolge ist sehr, sehr spezifisch.
Stellen Sie also sicher, dass Sie die Daten als übergeben Ein Argument,
wenn Sie die Funktion auf dieselbe Weise wie die Funktion aufrufen wird im Funktionsheader in der
Parameterliste deklariert und übergeben Die richtigen Typen sind das auch.
Aufrufen einer Funktion und Zuweisen der zurückgegebenen Daten.
Wenn eine Funktion Daten zurückgibt, wird die Die Funktion kann diese Daten nur mit dem
Gleichheitsoperator und danach zuweisen die Rückgabe auch oder Sie können es in einer lokalen Variablen speichern,
wenn Sie möchten.
Es wird auch mit einem Ausdruck funktionieren.
Sie können also return x plus sagen y, Sie können return x sagen, Sie können
return a constant sagen.
Dieses Beispiel hier ist hinter dir her Rufen Sie den Anruf auf, wenn Sie die
zurückgegebenen Daten zuweisen möchten.
Sie können also sagen, dass int x gleich my ist Funktionsaufruf, was auch immer
diese Funktion zurückgibt, wird x zugewiesen.
Und wenn mein Funktionsaufruf zurückkehrt x plus y, das Ergebnis von x plus
y wird x zugewiesen.
So können Sie die Daten zuweisen, die von einem
Funktionsaufruf zurückgegeben, indem nur eine Variable auf dem linke Seite der
Gleichen und der Funktionsaufruf auf der rechte Seite der Gleichen.
Die aufrufende Funktion hat nicht um den von einer aufgerufenen Funktion zurückgegebenen Wert
zu erkennen oder zu verarbeiten.
Das musst du nicht haben diese Aufgabe dort.
Wenn eine Funktion Daten zurückgibt und Sie interessieren sich nicht für diese Daten, Sie müssen
überhaupt nicht die gleichen haben, Sie können die Funktion einfach aufrufen.
Es würde nicht wirklich Sinn machen, weil Wenn Daten zurückgegeben werden, bedeutet dies,
dass Sie sich diese wahrscheinlich ansehen müssen es, aber du musst es nicht tun.
Der Compiler wird nicht Beschweren Sie sich, wenn Sie nur
eine Funktion aufrufen und die Daten nicht verarbeiten.
Es liegt an dir, wie du möchten die Daten verwenden, die
von Funktionsaufrufen zurückgegeben werden.
Hier ist ein Beispiel für das Aufrufen eine Funktion und auch die Rückgabe von Daten
von einer Funktion.
In diesem Beispiel multiplizieren Sie zwei Zahlen.
Dies war genau wie das Beispiel, das wir hatte vorher, aber das
vorherige Beispiel gab keine Daten zurück.
Im vorherigen Beispiel wurde die Ausgabe angezeigt.
In diesem Beispiel sind wir keine Ausgabe anzeigen.
Wir geben die Daten zurück und dann zeigen wir die
Ausgabe in der Hauptfunktion an.
Hier multiplizieren wir zwei Zahlen Nimmt zwei ganze Zahlen als Parameter.
Wir multiplizieren diese beiden ganzen Zahlen.
Und dann anstatt dies zu drucken Betrag oder Wert, wir verwenden das Schlüsselwort return und wir
sind dann Wenn Sie eine Variable mit dem Namen result angeben, haben wir das
Semikolon, um sie zu beenden.
Wenn Sie das Schlüsselwort return sehen Innerhalb des Funktionskörpers geben Sie
diese Daten zurück.
Und denk dran, du kannst habe das mehrere Plätze.
Aber Sie können nur einen zurückgeben lassen Wert, Sie können nicht mehrere Werte zurückgeben.
Wenn Sie also das Schlüsselwort return in haben An mehreren Stellen muss es sich
innerhalb einer if-Anweisung oder einer Schleife befinden, weil Du springst sofort raus.
Wenn Sie eine Rückkehr haben, gefolgt von Bei einer weiteren Rückgabe wird
Ihnen ein Fehler angezeigt, da dies Sie sagen würde haben in beiden Fällen zwei Renditen.
Sie kehren immer wieder zurück Ergebnisse, das können Sie nicht tun.
Aber das Schlüsselwort return ist wichtig.
Sie geben eine Variable zurück.
Und dann sehen Sie in der Hauptsache Funktion Die Daten, die zurückgegeben
werden, werden zugewiesen eine andere lokale Variable namens result.
Sie werden feststellen, dass wir verwenden die gleichen Namen hier.
Das hat mit Funktion zu tun Umfang, über den
wir in der nächsten Vorlesung sprechen werden, lokal Variablen versus globale Variablen.
Alles was Sie brauchen, um aufmerksam zu sein In dieser Vorlesung
wird die Tatsache multipliziert Zwei Zahlen geben Daten zurück.
Wie Sie es zurückgeben, geben Sie es zurück Verwenden Sie das Schlüsselwort return,
gefolgt von der Variablen des Ausdrucks.
Sie bemerken auch, dass die multiplizieren Zwei Zahlen geben den Rückgabetyp
oben im Funktionsheader an.
Es gibt ein int zurück.
Also müssen wir ein int zurückgeben.
Sie bemerken das auch, wenn wir zuweisen Die Daten in
der Hauptfunktion weisen wir in int zu.
Zuweisen dieser sehr einfach wir Habe nur den Gleichheitsoperator.
Wenn uns die Daten nicht wichtig waren, haben wir könnte einfach multiplizieren
zwei zahlen nennen und dann nichts damit machen aber.
Nachdem wir die Daten zurückgegeben haben Von der Funktion drucken wir
sie dann mit einer printf-Funktion aus.
Dies macht die Funktion mehr zusammenhängend, dass es Daten nimmt.
Wir zeigen nicht wirklich an die Ergebnisse innerhalb der Funktion.
Es gibt Zeiten, in denen wir nicht wollen Um
die Ergebnisse anzuzeigen, wollen wir nur zwei Zahlen multiplizieren und dann Vielleicht möchten wir das Produkt teilen.
Flexibilität bei der Datenübertragung und die Rückgabe von Daten ist eine große Sache.
Dies ist ein einfaches Beispiel.
Du wirst ausgesetzt sein Dies mehr in unserer nächsten Herausforderung.