Argumentwerte in C++
Die Operation einer Funktion kann in C++ durch einen Argumentwert näher bestimmt werden.
In dem folgenden Programm wird die Operation »::std::printf( "Hallo!\n" )« mit dem Argument »"Hallo!\n"« der Funktion »::std::printf« notiert. Die Auswertung dieses Ausdrucks bewirkt dann die Ausführung dieser Operation, also die Ausgabe des Textes »Hallo!« und des Abschlusses der Zeile. Man sagt auch manchmal, in dem Ausdruck »::std::printf( "Hallo!\n" )« werde die Funktion »printf« auf das Argument »"Hallo\n"« angewendet oder die Funktion »printf« werde mit dem Argument »"Hallo\n"« oder für das Argument »"Hallo\n"« aufgerufen.
hallo.cpp#include <cstdio> // ::std::printf int main(){ ::std::printf( "Hallo!\n" ); }::std::coutHallo!
Die Funktion »::std::printf« sollte normalerweise nicht zur Ausgabe verwendet werden, da dafür in C++ der schon verwendete Ausgabeoperator »<<« besser geeignet ist. Sie wird nur wegen ihrer Einfachheit und Anschaulichkeit als Beispiel einer Funktion, die ein Argument akzeptiert, verwendet.
Es folgt eine vereinfachte Dokumentation der Funktion »printf«.
- ::std::printf
#include <cstdlib>
int ::std::printf( char * zeichenfolge );
Wirkung: Ausgabe der zeichenfolge.
Wert: Die Anzahl der ausgegebenen Zeichen.
Neu an dieser Dokumentation ist die Parameterbeschreibung »char * zeichenfolge«. Sie gibt die Stelle an, an der bei einer Verwendung das Argument steht. Der Parametertyp »char *« gibt den erwarteten Typ des Arguments an. Der Parametername (kurz: „Parameter“) »zeichenfolge« steht dabei als eine Art von Platzhalter für das Argument.
Man kann die Funktion »::std::printf« auch als eine „parametrisierte Operation“ verstehen. Das bedeutet, daß durch die Funktion »::std::printf« alleine noch keine Operation angegeben wird, sondern noch ein Argumentwert hinzugefügt werden muß, um eine bestimmte Operation, wie beispielsweise die Operation »printf( "Hallo!\n" )« zu notieren.
- ? Resultattyp
- Welchen Typ hat das Resultat der Funktion »::std::printf«?
- ? char *
- Der Typ »char *« wurde im Kurs bereits vorgestellt. Welche Erklärung wurde dabei für »char *« angegeben?
Übungsaufgabe
Mit der folgenden Übungsaufgabe soll das selbständige Schreiben von Programmen an Hand der Dokumentation weiter geübt werden. Dazu wird die folgenden Dokumentation verwendet:
- ::std::putchar
#include <cstdio>
int ::std::putchar( int kennzahl );
Wirkung: Ausgabe des Zeichens mit der angegebenen Kennzahl.
Wert: Das ausgegebene Zeichen.- ? Resultattyp
- Welchen Typ hat das Resultat der Funktion »::std::putchar«?
- ? Parametertyp
- Welchen Typ hat der Parameter der Funktion »::std::putchar«?
- / Ausgabe eines Zeichen ohne Verwendung des Resultats
- Schreiben Sie ein C++ -Programm, in dem die Funktion »::std::putchar()« nur wegen ihrer Wirkung aktiviert wird, während ihr Resultat verworfen wird. Dabei soll die Funktion verwendet werden, um das Zeichen mit der Kennzahl 65 auszugeben. Danach soll mit der Anweisung »::std::cout << '\n';« noch ein Zeilenende ausgegeben werden. Außerdem sollen alle nötigen include-Direktiven verwendet werden.
- / Ausgabe eines Zeichen mit Verwendung des Resultats
- Ergänzen Sie das Programm der vorigen Aufgabe um eine Anweisung, in der mit der Funktion »::std::putchar()« das Zeichen mit der Kennzahl 65 ausgegeben wird und in der außerdem auch das Resultat dieses Aufrufs ausgegeben wird. Dabei soll zur Ausgabe dieses Resultats der Ausgabeoperator »<<« verwendet werden und nicht die Funktion »::std::printf«. Diese weitere Anweisung soll vor der Anweisung zur Ausgabe des Zeilenendes eingefügt werden.
- / Ausgabe eines eingelesenen Zeichen
- Schreiben Sie ein Programm, das ein mit »::std::getchar« eingelesenes Zeichen mit »::std::putchar« wieder ausgibt. In diesem Programm sollte also weder »printf« noch der Ausgabeoperator verwendet werden.