Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
Vorwort des Gutachters
1 Einstieg in C
2 Das erste Programm
3 Grundlagen
4 Formatierte Ein-/Ausgabe mit »scanf()« und »printf()«
5 Basisdatentypen
6 Operatoren
7 Typumwandlung
8 Kontrollstrukturen
9 Funktionen
10 Präprozessor-Direktiven
11 Arrays
12 Zeiger (Pointer)
13 Kommandozeilenargumente
14 Dynamische Speicherverwaltung
15 Strukturen
16 Ein-/Ausgabe-Funktionen
17 Attribute von Dateien und das Arbeiten mit Verzeichnissen (nicht ANSI C)
18 Arbeiten mit variabel langen Argumentlisten – <stdarg.h>
19 Zeitroutinen
20 Weitere Headerdateien und ihre Funktionen (ANSI C)
21 Dynamische Datenstrukturen
22 Algorithmen
23 CGI mit C
24 MySQL und C
25 Netzwerkprogrammierung und Cross–Plattform-Entwicklung
26 Paralleles Rechnen
27 Sicheres Programmieren
28 Wie geht’s jetzt weiter?
A Operatoren
B Die C-Standard-Bibliothek
Stichwort

Jetzt Buch bestellen
Ihre Meinung?

Spacer
<< zurück
C von A bis Z von Jürgen Wolf
Das umfassende Handbuch
Buch: C von A bis Z

C von A bis Z
3., aktualisierte und erweiterte Auflage, geb., mit CD und Referenzkarte
1.190 S., 39,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1411-7
Pfeil 18 Arbeiten mit variabel langen Argumentlisten – <stdarg.h>
Pfeil 18.1 Makros in <stdarg.h> – »va_list«, »va_arg«, »va_start« und »va_end«
Pfeil 18.2 Die Argumentliste am Anfang oder Ende kennzeichnen
Pfeil 18.3 »vprintf()«, »vsprintf()«, »vfsprintf()« und »vsnsprintf()«
Pfeil 18.4 Variadic Makros – __VA_ARGS__

In diesem Kapitel lernen Sie Möglichkeiten kennen, wie Sie Funktionen mit einer variablen Anzahl von Argumenten aufrufen können.

18 Arbeiten mit variabel langen Argumentlisten – <stdarg.h>

Dass in C Funktionen mit variabel langen Argumentlisten aufgerufen werden können, dürfte Ihnen an Funktionen wie printf() oder scanf() bereits aufgefallen sein. Die Deklaration von printf() sieht wie folgt aus:

int printf(const char* format, ...);

Anhand dieser Deklaration erkennen Sie auch, dass printf() mindestens ein festes Argument (const char *format) und eine variable Anzahl optionaler Argumente erwartet. Die variable Anzahl optionaler Argumente erkennen Sie an den drei Punkten, dem zweiten Parameter von printf(). Diese drei Punkte werden Ellipse genannt. Die Verwendung von printf() ohne weitere Argumente kennen Sie ja:

printf("ohne weitere Argumente\n");

Jetzt folgt dasselbe mit zwei Argumenten:

printf("Ich habe %d %s\n", argument2, argument1);

Anhand der beiden Formatzeichen %d und %s ist jetzt bekannt, dass dort zwei Argumente folgen.


Rheinwerk Computing - Zum Seitenanfang

18.1 Makros in <stdarg.h> – »va_list«, »va_arg«, »va_start« und »va_end« topZur vorigen Überschrift

Damit Sie eigene Funktionen mit einer variablen Argumentliste schreiben können, sind in der Headerdatei <stdarg.h> folgende vier Makros deklariert:


Tabelle 18.1 Makros der Headerdatei »stdarg.h«

Makro Syntax Bedeutung
va_list
va_list argPtr;

Abstrakter Datentyp (wird auch als Argumentzeiger bezeichnet), mit dem die Liste der Parameter definiert wird und mit dem der Zugriff auf die optionalen Argumente realisiert wird.

va_start
va_start( va_list argPtr,
          lastarg);

Argumentliste initialisiert den Argumentzeiger argPtr mit der Position des ersten optionalen Arguments. An lastarg muss der letzte Parameter in der Liste übergeben werden.

va_arg
type va_arg( va_list argPtr,
             typ );

Gibt das optionale Argument zurück, auf das argPtr im Augenblick verweist, und setzt den Argumentzeiger auf das nächste Argument. Mit typ geben Sie den Typ des zu lesenden Arguments an.

va_end
void va_end(va_list argPtr);

Hiermit können Sie den Argumentzeiger argPtr beenden, wenn Sie diesen nicht mehr benötigen.

va_copy
void va_copy( va_list dest,
              va_list src ) ;

Hiermit initialisieren Sie den Argumentzeiger dest mit den aktuellen Argumenten von src. Dies macht beispielsweise dann Sinn, wenn Sie eine Argumentenliste ein zweites Mal durchlaufen wollen.



Hinweis

Die Makros va_end() und va_copy() können auch als Funktion implementiert sein.




Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
  
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: C von A bis Z

 C von A bis Z
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: C/C++






 C/C++


Zum Rheinwerk-Shop: Einstieg in C






 Einstieg in C


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: C++ Handbuch






 C++ Handbuch


Zum Rheinwerk-Shop: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2009
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern