| Grundlagen zur C und C++-Programmierung | |
|---|---|
|
Allgemeines zu Headerfiles#include-Anweisungen veranlassen den Praeprozessor, den Text aus der einzubindenden Datei an der Stelle des Befehls einzusetzen. Alle Einbindungen, die mit der Raute "#" beginnen, sind Praeprozessoranweisungen. Der Praeprozessor ist ein etwas fortschrittlicheres Textprogramm mit der Aufgabe, Text zu suchen, zu ersetzen und zu verbinden. Headerfiles werden meistens in mehreren Dateien benoetigt. Um Doppeldefinitionen und -Deklarationen zu vermeiden, steht am Beginn jedes vernueftigen Headerfiles folgende Define-Anweisung: // Wenn dieses define noch nich definiert ist #ifndef __STDIO_H // definiere es #define __STDIO_H Statt der doppelten Unterstriche könnten auch einzelne vorhanden sein. Es hat sich aber eingebürgert, interne Defines mit Doppelunterstrich zu beginnen. So sind sie besser von eigenen Defines zu unterscheiden. Der letzte Buchstabe "H" sagt, dass es sich um einen Headerfile handelt. In dieser Form richtig aufgebaute Headerfiles können somit über die #include-Anweisung
in mehrere Projekt-Quelltexte eingebunden werden, ohne dass auf mögliche Doppeldeklarationen geachtet werden muss. Die richtige Auswahl triff der Praeprozessor. Erst, nachdem die Arbeit des Praeprozessors getan ist, übernimmt der Compiler dann die Umwandlung in Binaercode. Am Schluss stellt der Linker alle vorgesehenen Verbindungen zwischen den Modulen her. Wenn auch dieser seine Arbeit erfolgreich beenden konnte, ist ein lauffähiges Programm entstanden. Die Abläufe des gesamten Compilierungsablaufs:a) Praeprozessor
Zeiger und DereferenzenZeiger sind Variablen, in denen Speicheradressen gespeichert werden. Zeiger werden im Code durch einen Stern * dargestellt. Gleichzeitig ist der * aber auch der Dereferenzierungsoperator, mit dem man auf den "Inhalt" eines Zeigers zugreifen kann. Wir wollen uns das an einem kleinen Beispiel ansehen: // Einen Integer deklarieren und mit 1 intitalisieren int zahl=1; // Nun kann ein Zeiger vom Typ integer deklariert werden int *zeiger; // Diesem zeiger die Speicheradresse von zahl zuweisen zeiger=&zahl; & bedeutet: Gib mir die Speicheradresse von der folgenden Variablen. zeiger und zahl sind jetzt ein und die selbe Variable. zeiger zeigt nämlich auf den Speicherbereich von zahl. Nur ist zeiger nunmal ein Zeiger (logisch
// ein Interger deklarieren und den Wert von zahl dereferenzieren int val=*zeiger; Nun hat val den Wert von zahl, also 1. Wir haben val den Wert zugewiesen,
auf den der Zeiger zeiger zeigt (hört sich cool an, oder?
| |
| Autor: Micronuke / Omega-X |