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
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