Beispielprogramm: VARPAR.CPP
Das Programm VARPAR.CPP gibt ein Beispiel für die Verwendung von einer veränderbaren Anzahl an Argumenten in einem Funktionsaufruf.
Wir haben einige Mühen auf uns genommen, um den Compiler dazu zu bringen, für uns zu kontrollieren, ob wir in Funktionsaufrufen die richtige Anzahl und die richtigen Typen von Parametern verwenden. Ab und an mag es aber vorkommen, daß wir eine Funktion schreiben wollen, die unterschiedliche Anzahlen von Parametern verwenden kann. Die printf() Funktion ist ein gutes Beispiel dafür. ANSI-C stellt uns in der Datei "stdarg.h" drei Makros zur Verfügung, mit denen sich das bewerkstelligen läßt. Diese können wir auch in C++ verwenden, müssen aber einen Weg finden, die strengere Typenkontrolle zu umgehen, die bei jeder Funktion in C++ durchgeführt wird. Dies bewirken die drei Punkte in Zeile 6. Dieser Prototyp sagt aus, daß als erstes ein Argument des Typs int notwendig ist, dann aber wird vom Compiler keine weiter Typenkontrolle durchgeführt.
Das Hauptprogramm besteht aus drei Aufrufen der Funktion, jeder mit einer anderen Anzahl von Parametern, und das System ignoriert dies einfach. Du könntest so viele verschiedene Variablentypen in den Funktionsaufruf einbauen wie Du willst. Solange der erste Parameter eine Variable vom Typ int ist, wird sich das System jede erdenkliche Mühe geben, Dein Programm zu kompilieren und es auszuführen. Natürlich erfolgt auch keinerlei Kontrolle nach dem ersten Argument, es obliegt also allein Dir, die richtigen Parametertypen im Funktionsaufruf zu verwenden.
In diesem Fall zeigt der erste Parameter die Anzahl der zusätzlichen Argumente an. In diesem einfachen Beispiel geben wir nur die Zahlen auf dem Bildschirm aus, um zu demonstrieren, daß sie wirklich richtig abgearbeitet wurden.
Du hast sicherlich festgestellt, daß die Verwendung von einer variablen Anzahl an Parametern zu sehr obskurem Quellcode führen kann und deshalb nur sehr selten angewendet werden sollte. Die Möglichkeit besteht jedenfalls, solltest Du etwas derartiges jemals benötigen. Kompiliere das Programm und lass' es laufen.
Copyright © 1997, 1998, 2001-2006 Heinz Tschabitscher - Letzte Änderung 10. Dezember 2005
Heinz Tschabitscher - | Datenschutz | Impressum - Kommentare, Kritik, Anregungen, Beschwerden?