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.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] <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 11.09.2008 13:04:00 Letzte Änderung am: 11. September 2008 Version 2.4, I. Oesch 43/147

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!