Zeiger
Hallo und herzlich Willkommen zu meinem Tutorial über Zeiger in der Sprache C/C++. Ich werde in diesem Tutorial die Code-Beispiele für beide Sprachen erklären. Zeiger sind schon ein schwereres Thema, deshalb ist es eher nicht für Einsteiger gedacht. Wenn ihr Fragen habt, dann fragt bitte.
1. Grundlagen
Was sind eigentlich Zeiger?
Zeiger sind ganz besondere Variablen. Zur Erklärung nehmen wir uns mal eine normale Integrer-Variable. Eine normale Variable besteht aus 4 Bestandteilen. Aus einem Typ. In diesem Fall Int. Aus einem Wert. Einer Speicheradresse (damit auf die richtige Variable zugegriffen werden kann). Und aus einem Bezeichner (in anderen Worten der Name). Ein Zeiger ist eine Variable, die anstatt des Wertes eine weitere Speicheradresse besitzt. Mit dieser Adresse kann man auf Daten, Variablen, Objekte und auch Programmcode zugreifen.
Aber aus dieser Erklärung kann man noch nichts lernen. Deshalb kommt jetzt die Praxis.
2. Erster Kontakt
Als erstes wollen wir mal einen Zeiger deklarieren. Bei C/C++ geschieht das auf dieser Weise.
|
C/C++-Quelltext 
|
1
|
int *pointer;
|
int ist der Typ des Zeigers.
Merke!: Ein Zeiger muss den gleichen Typ haben, wie der Wert auf den er zeigt.
pointer ist der Bezeichner also der Name des Zeigers.
Aber was ist dieser Stern?
Dieses Sternchen (in Wirklichkeit Indirektionsoperator genannt) ist das Zeichen für einen Zeiger. Man muss das Sternchen zwischen den Typ und dem Bezeichner platzieren. Aber es hat sich eingebürgert, dass man das Sternchen am Anfang des Zeigers platziert.
Tipp!
Damit man zu keinen Fehlern kommt empfiehlt es sich den Zeiger auf die Konstante NULL zu setzen.D.H:
|
C/C++-Quelltext 
|
1
|
int *pointer = NULL;
|
Denn wenn man den Zeiger benutzt, ohne in vorher einer Variablen zugewiesen zu haben, dann kann das zu bösen Folgen führen, denn der Zeiger verwendet dann irgendeine Speicheradresse.
Also der Syntax vom deklarieren eines Zeigers lautet allgemein so:
|
C/C++-Quelltext 
|
1
|
Typ *Bezeichner;
|
3. Erstes Programm mit einem Zeiger
Als erstes zeige ich euch, wie ihr die Adresse einer Variablen an einen Zeiger übergebt. Hier ist erst mal der Code:
|
C/C++-Quelltext 
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#include <stdlib.h>
#include <stdio.h>
int main() {
int zahl = 5;
int *pointer = NULL;
pointer =& zahl;
printf("Pointer: %d\n", *pointer);
printf("Zahl: %d\n", zahl);
return EXIT_SUCCESS;
}
|
Das gleiche noch als C++ - Code:
|
C/C++-Quelltext 
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#include <iostream>
using namespace std;
int main() {
int zahl = 5;
int *pointer = NULL;
pointer =& zahl;
cout << "Pointer: " << *pointer << endl;
cout << "Zahl: " << zahl << endl;
return 0;
}
|
So.
Hier wird zuerst einmal eine Integrer-Variable (zahl) mit dem Wert 5 deklariert und definiert. Danach ein Zeiger (*pointer) der gleich NULL gesetzt wird. Danach wird die Adresse übergeben.
Durch dieses „&“ Zeichen, übergibt die Integrer-Variable seine Adresse an den Zeiger. Danach wird beides ausgegeben. Wenn man den Indirektionsoperator (das Sternchen) vor den Pointer schreibt, beim ausgeben, wird der Wert, auf den der Pointer zeigt ausgegeben. Das was ich gerade erklärt habe, gilt bei normalen Variablen. Also bei allen normalen Integrer, Float, etc. Variablen. Bei Arrays ist das nochmal anders. Dazu kommen wir später.
Ihr könnt ja mal versuchen die Adresse vom Zeiger und von der Zahl auszugeben. Ich habe leider keine Ahnung wie das bei C++ geht. Nur bei C weiß ich das, aber ich glaube die Mehrheit hier will C++ lernen.
Bald gehts Weiter!