Eine Einführung in die Programmiersprache C und die Grundlagen ...
Eine Einführung in die Programmiersprache C und die Grundlagen ...
Eine Einführung in die Programmiersprache C und die Grundlagen ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<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.9 [C99] Inl<strong>in</strong>e Funktionen<br />
[C99] In C99 können Funktionen auch <strong>in</strong>l<strong>in</strong>e def<strong>in</strong>iert werden. Bei Inl<strong>in</strong>efunktionen wird<br />
beim Aufruf der Funktion nicht <strong>die</strong> Funktion aufgerufen, sondern vom Compiler der Code<br />
der Funktion an <strong>die</strong>ser Stelle e<strong>in</strong>gefügt. Dadurch wird der Code schneller, da der Funktionsaufruf<br />
wegfällt, dafür wird er länger, da bei jedem Aufruf der Funktionscode e<strong>in</strong>gefügt<br />
wird. <strong>in</strong>l<strong>in</strong>e sollte nur bei kurzen, e<strong>in</strong>fachen Funktionen verwendet werden. <strong>in</strong>l<strong>in</strong>e ist<br />
nur e<strong>in</strong>e Anfrage, der Compiler muss <strong>die</strong> Funktion nicht <strong>in</strong>l<strong>in</strong>e compilieren, er darf das<br />
Schlüsselwort auch e<strong>in</strong>fach ignorieren. (Rekursive Funktionen können z. B. gar nicht <strong>in</strong>l<strong>in</strong>e<br />
se<strong>in</strong>.).<br />
<strong>in</strong>l<strong>in</strong>e <strong>in</strong>t Maximum(<strong>in</strong>t a, <strong>in</strong>t b)<br />
{<br />
return a > b ? a : b ;<br />
}<br />
10.10 Funktionen mit variabler Argumentenliste<br />
Es können auch Funktionen mit e<strong>in</strong>er unbekannten Anzahl an Argumenten def<strong>in</strong>iert werden, wobei<br />
aber m<strong>in</strong>destens e<strong>in</strong> Argument vorhanden se<strong>in</strong> muss. Die unbekannten Argumente werden mit e<strong>in</strong>er<br />
Ellipse ... (drei Punkte) als letztes Argument angegeben. Auf <strong>die</strong> zusätzlichen Argumente kann mit<br />
den Makros va_list, va_start, va_end, va_arg aus stdarg.h zugegriffen werden. Auf den<br />
Umgang mit variablen Argumentlisten wird <strong>in</strong> <strong>die</strong>sem Skript nicht weiter e<strong>in</strong>gegangen. <strong>E<strong>in</strong>e</strong> Funktion<br />
mit variabler Anzahl an Argumenten ist z. B. <strong>die</strong> pr<strong>in</strong>tf() Funktion<br />
<strong>in</strong>t pr<strong>in</strong>tf(char *, ...); /* Prototyp von pr<strong>in</strong>tf */<br />
10.11 [C99] VLA's (Variable Length Arrays)<br />
[C99]<br />
<strong>in</strong> C99 können auch VLAs (Variable Length Arrays, siehe Kap. 11.5) als Argumente an<br />
Funktionen übergeben werden, <strong>die</strong> Grösse des Arrays muss dabei als separates Argument<br />
übergeben werden, <strong>die</strong>ses muss dabei <strong>in</strong> der Parameterliste vor dem Array stehen:<br />
<strong>in</strong>t f(<strong>in</strong>t n, <strong>in</strong>t m, <strong>in</strong>t Feld[n][m])<br />
{<br />
/* Bei jeden Aufruf der Funktion f */<br />
/* kann das Array e<strong>in</strong>e andere Grösse */<br />
/* haben, aber während e<strong>in</strong>em Funktionsdurchlauf */<br />
/* bleibt <strong>die</strong> Grösse gleich */<br />
}<br />
Gedruckt am 10.09.2009 14:23:00 Letzte Änderung am: 10. September 2009 Version 2.4.1, I. Oesch 43/147