kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




Zeiger (Pointer)

(EN google-translate)

(PL google-translate)


Es empfiehlt sich sehr vorsichtig mit Zeigern um zugehen, weil schnell Speicherzugriffsfehler entstehen können, die ein Programm abstürzen lassen können.


  • Auch um besser verstehen zu können, was eine Variable ist, lohnt es sich, sich mit Zeigern (Pointern) zu beschäftigen.
  • Wenn eine Variable deklariert wird, wird im Arbeitsspeicher ein entsprechender Platz reserviert.
  • Bei modernen Rechnern sind das beispielsweise vier Byte, wenn es sich um eine Integer-Variable handelt.
  • Zeiger (Pointer) sind ein eigener Datentyp in C/C++.
  • Eine Zeigervariable kann die Speicheradresse einer Variable enthalten.
  • Einen Zeiger mit dem Bezeichner y, der auf eine Adresse einer Integer-Varibalen zeigt, kann so deklariert werden: int *y;
  • Es ist möglich, einem Zeiger die Adresse einer existierenden Variable zuzuweisen:
Zuweisen der Adresse der Integer-Variablen x an eine Zeigervariable y.

Bild 0-1: Zuweisen der Adresse der Integer-Variablen x an eine Zeigervariable y.

  • *y ermöglicht auf den wert zuzugreifen, der an der in y gespeicherten Adresse liegt.
  • Umgekehrt ermöglicht &x den Zugriff die Adresse, an der die Variable x gespeichert ist.
#include<iostream>
using namespace std;
int main(void)
{
    int x;
    int *y;

    x=5;
    y=&x;

    cout<<"Wert von x="<<x<<endl;
    cout<<"Adresse von &x="<<&x<<endl;
    cout<<"Adresse von y="<<y<<endl;
    cout<<"Wert an der Adresse von *y="<<*y<<endl;
}

Code 0-1: Das Ganze als Programm.

Terminal-Ausgabe zum obigen Programm.

Bild 0-2: Terminal-Ausgabe zum obigen Programm.

  • Alternativ kann man aber nicht die Adresse einer normalen Variable z auf die einer anderen Variablen "umbiegen".
  • Das folgende an sich logisch aufgebaute Programm führt zu einem Compilerfehler, weil es nicht zulässig ist, der Adresse einer Variablen eine Zuweisung zu machen:
#include<iostream>
using namespace std;
int main(void)
{
    int x;
    int z;

    x=5;
    &z=&x; //UNZULÄSSIG

    cout<<"Wert von x="<<x<<endl;
    cout<<"Adresse von &x="<<&x<<endl;
    cout<<"Wert von z="<<z<<endl;
    cout<<"Adresse von &z="<<&z<<endl;
}

Code 0-2: FÜHRT ZU COMPILER-FEHLER!