Wie Funktionen zu erstellen, die Werte in C-Programmierung zurück

Eine große Mehrheit der C-Sprache-Funktionen geben eine wert-, das heißt, sie etwas zu generieren. Der Code kann die Werte nicht verwenden, aber sie sind auf jeden Fall zurück.

Eine Funktion, die einen Wert zurückgibt zeigt eine Funktion, die einen Wert gesendet wird, und gibt dann einen anderen Wert. Das ist die Art und Weise die meisten Funktionen arbeiten, obwohl einige Funktionen Werte zurückgeben, ohne notwendigerweise jede zu empfangen. Zum Beispiel getchar () liefert Eingang aber erfordert keine Argumente. In einem festeren Version akzeptiert der convert () Funktion einen Fahrenheit Wert und gibt seine Celsius gleichwertig.

Eine Funktion, die einen Wert zurück

# include Schwimmer convert (float f) -int main () {float temp_f, temp_c-printf ( "Temperatur in Fahrenheit:") -scanf ( "% f", temp_f) -temp_c konvertieren = (temp_f) -printf ( "% .1fF ist% .1fC n ", temp_f, temp_c) -return (0) -} float convert (float f) {float tt = (f - 32) / 1,8-return (t) -}

Linie 3 in einer Funktion, die einen Wert zurückgibt, erklärt der convert () Funktion des Prototyps. Die Funktion erfordert eine Floating-Point-Wert und gibt einen Fließkommawert.

Der Konvertit () Funktion wird in der Linie 11. Der Rückgabewert wird in Variable gespeichert aufgerufen temp_c auf der gleichen Linie. In Zeile 12, printf () zeigt den ursprünglichen Wert und die Umwandlung. Der .1f Platzhalter verwendet wird. Es begrenzt Gleitkommazahlen Ausgang auf alle Zahlen links von dem Dezimalpunkt, aber nur eine Reihe nach rechts.

Der convert () Funktion beginnt in Zeile 16. Es werden zwei Variablen: f enthält den Wert der Funktion übergeben, eine Temperatur in Fahrenheit. Eine lokale Variable, t, wird durch die Formel auf der Linie 20, die die Celsius-Temperaturwert, erklärte bei Zeile 18 und zugeordnet zu berechnen.

Zeile 20 wandelt die f Fahrenheit-Wert in den t Celsius Wert. Die Klammern um f - 32 direkt den Compiler, dass ein Teil der Berechnung zuerst durchzuführen und dann das Ergebnis um 1,8 teilen. Wenn Sie die Klammern weglassen, wird 32 um 1,8 geteilt erste, was zu einem falschen Ergebnis führt.

Das Ergebnis der Funktion wird in Zeile 21 mit dem Schlüsselwort return zurückgeschickt.

Übung 1: Geben Sie den Quellcode aus einer Funktion, die einen Wert in Ihren Editor zurück. Erstellen und ausführen.

Funktionen, die Werte zurückgeben kann dieser Wert in einer Variablen gespeichert haben, wie in Zeile 11 der A-Funktion gezeigt, dass ein Wert zurückgibt, oder Sie können auch den Wert sofort ab. Beispielsweise:

printf ( ".% 1ff ist% .1fC n", temp_f, konvertieren (temp_f)) -

Übung 2: Ändern Sie den Quelltext aus einer Funktion, die einen Wert zurückgibt, so dass die convert () Funktion wird sofort in der Funktion printf (). Hinweis: Das ist nicht die einzige Linie, die Sie benötigen, zu reparieren, um die Änderung zu vervollständigen.

Sie können auch feststellen, dass die convert () Funktion selbst ein redundantes Element hat. Haben Sie wirklich brauchen die t Variable in dieser Funktion?

Übung 3: Bearbeiten Sie Ihre Source-Code aus Übung 2 wieder, Schnipsel diesmal aus der t Variable aus der convert () Funktion.

Ehrlich gesagt, könnte man einfach die convert () Funktion zusammen beseitigen, weil es nur eine Zeile ist. Dennoch ist der Nutzen einer Funktion wie, dass man, dass man es überall in Ihrem Code aufrufen können.

Anstatt also wiederholen die gleiche Sache immer und immer wieder, und müssen diesen wiederholten Textblock bearbeiten und immer, wenn sich etwas ändert, können Sie einfach eine Funktion erstellen. Das ist eine Sache vollkommen legitim, und es ist die ganze Zeit in C getan

Eine Engere Version zeigt das Endergebnis für Übung 3.

Eine straffere VERSION

# include Schwimmer convert (float f) -int main () {float temp_f-printf ( "Temperatur in Fahrenheit:") -scanf ( "% f", temp_f) -printf ( "% 1 ff ist% .1fC. n" , temp_f, konvertieren (temp_f)) - return (0) -} float convert (float f) {return (f - 32) / 1.8-}

Die convert () Funktion der Mathematik ist eine Zeile komprimiert, so dass eine temporäre Speichergröße (t von Linie 18 in einer Funktion, die einen Wert zurückgibt) ist nicht erforderlich.

Menü