06.10.2013 Aufrufe

Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke

Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke

Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>E<strong>in</strong>e</strong> <strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> Informatik <strong>und</strong> <strong>die</strong> <strong>Programmiersprache</strong> C<br />

10 Funktionen<br />

Im Gegensatz zu anderen <strong>Programmiersprache</strong>n wird <strong>in</strong> C nicht zwischen Funktionen <strong>und</strong> Prozeduren<br />

unterscheiden. In C gibt es nur Funktionen, wobei e<strong>in</strong>e Funktion aber nicht zw<strong>in</strong>gend e<strong>in</strong>en<br />

Rückgabewert haben muss.<br />

<strong>E<strong>in</strong>e</strong> Funktion ist e<strong>in</strong> Unterprogramm, eigentlich e<strong>in</strong> Stück Code, welches e<strong>in</strong>en Namen hat, dem<br />

Werte übergeben werden können <strong>und</strong> das e<strong>in</strong> Ergebnis zurückliefern kann. Jede Funktion kann von<br />

anderen Funktionen aus über ihren Namen aufgerufen werden.<br />

E<strong>in</strong> C-Programm besteht gr<strong>und</strong>sätzlich aus e<strong>in</strong>er Menge von Funktionen, <strong>und</strong> m<strong>in</strong>destens <strong>die</strong> Funktion<br />

ma<strong>in</strong>() muss vorhanden se<strong>in</strong>, denn <strong>die</strong>se wird beim Start e<strong>in</strong>es Programmes automatisch aufgerufen,<br />

<strong>und</strong> wenn ma<strong>in</strong>() an se<strong>in</strong> Ende gelangt wird auch das Programm beendet.<br />

10.1 Def<strong>in</strong>ition e<strong>in</strong>er Funktion<br />

<strong>E<strong>in</strong>e</strong> Funktionsdef<strong>in</strong>ition besteht aus e<strong>in</strong>em Ergebnistyp (Dem Typ des Rückgabewertes), e<strong>in</strong>em<br />

Funktionsnamen, e<strong>in</strong>er Parameterliste <strong>und</strong> dem eigentlichen Funktionsrumpf (Code) <strong>in</strong> geschweiften<br />

Klammern.<br />

float Parallelschaltung (float Ra, float Rb)<br />

{<br />

float Rparallel = 0.0;<br />

}<br />

Rparallel = 1/(1/Ra + 1/Rb); /* Berechnung der Parallelschaltung */<br />

return Rparallel;<br />

10.2 Aufruf e<strong>in</strong>er Funktion<br />

<strong>E<strong>in</strong>e</strong> Funktion wird aufgerufen durch Angabe ihres Namens, gefolgt von e<strong>in</strong>er <strong>in</strong> e<strong>in</strong>em Klammerpaar<br />

e<strong>in</strong>geschlossenen Argumentenliste (Die Argumentenliste kann auch leer se<strong>in</strong>):<br />

float R1 = 3.3, R2 = 5.6, Rtot = 0.0;<br />

Rtot = Paralleleschaltung (4.7, 2.2);<br />

Rtot = Paralleleschaltung (Rtot, R1);<br />

Rtot = Paralleleschaltung (Rtot, R2);<br />

10.3 Übergabe von Argumenten<br />

<strong>E<strong>in</strong>e</strong>r Funktion muss immer <strong>die</strong> korrekte Anzahl an Argumenten übergeben werden, zudem müssen<br />

auch <strong>die</strong> Datentypen der Argumente mit den entsprechenden Parametern der Funktion kompatibel<br />

(<strong>in</strong>e<strong>in</strong>ander umwandelbar) se<strong>in</strong>. Die Argumente werden dabei gemäss ihrer Reihenfolge an <strong>die</strong><br />

Funktion übergeben, <strong>die</strong> Namen der Variablen spielen ke<strong>in</strong>e Rolle.<br />

In C werden alle Argumente by Value übergeben, das heisst dass <strong>die</strong> Werte kopiert werden, <strong>und</strong> <strong>in</strong><br />

der Funktion mit Lokalkopien gearbeitet wird. Somit kann e<strong>in</strong>e Funktion <strong>die</strong> Orig<strong>in</strong>alvariablen<br />

nicht verändern. (Zum<strong>in</strong>dest nicht direkt, siehe 'Call by Reference' im nächsten Abschnitt)<br />

Die e<strong>in</strong>zige Ausnahme s<strong>in</strong>d Arrays (Felder), <strong>die</strong>se werden nicht kopiert, sondern es wird e<strong>in</strong>e Referenz<br />

(Po<strong>in</strong>ter) auf das Array übergeben. Die Funktion hat somit direkten Zugriff auf das Orig<strong>in</strong>alfeld,<br />

<strong>und</strong> kann <strong>die</strong>ses auch verändern.<br />

Wenn e<strong>in</strong>e Funktion auf Variablen der aufrufenden Funktion zugreifen soll, müssen ihr <strong>die</strong> Adressen<br />

der betroffenen Variablen übergeben werden (Kapitel Po<strong>in</strong>ter). Diese Übergabe wird auch als<br />

'by Reference' (Im Gegensatz zu 'by Value') bezeichnet.<br />

Gedruckt am 11.09.2008 13:04:00 Letzte Änderung am: 11. September 2008 Version 2.4, I. Oesch 40/147

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!