Zeigerkonstanten

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Zeiger - Index

Ein Zeiger oder das Objekt, auf das gezeigt wird, kann mit dem const-Modifizierer deklariert werden. Einem Objekt, das als const deklariert ist, kann nichts zugewiesen werden. Es ist auch nicht zulässig, einen Zeiger anzulegen, der diese Regel verletzt. Betrachten Sie folgende Beispiele:



 int i;                       // i ist ein int
 int * pi;                    // pi ist ein Zeiger auf einen int (uninitialisiert)
 int * const cp = &i;         // cp ist ein konstanter Zeiger auf einen int
 const int ci = 7;            // ist ein konstanter int
 const int * pci;             // pci ist ein Zeiger auf einen konstanten int
 const int * const cpc = &ci; // cpc ist ein konstanter Zeiger auf einen
                              // konstanten int



Folgende Zuweisungen sind zulässig:



 i = ci;                     // const-int zu int
 *cp = ci;                   // const-int zu Objekt, auf das ein
                             // konstanter Zeiger zeigt
 ++pci;                      // Inkrementieren eines Zeigers auf ein const
 pci = cpc;                  // konstanter Zeiger auf einen const
                             // zu Zeiger auf const



Folgende Zuweisungen sind nicht zulässig:



 ci = 0;                     // Falsch: Zuweisung zu const-int nicht erlaubt
 ci--;                       // Falsch: const-int darf nicht geändert werden
 *pci = 3;                   // Falsch: Zuweisung zu Objekt, auf das ein
                             // Zeiger auf const zeigt, nicht erlaubt
 cp = &ci;                   // Falsch: Zuweisung zu einem konstanten Zeiger nicht
                             // erlaubt, auch wenn der Wert unverändert bleibt
 cpc++;                      // Falsch: konstanter Zeiger darf nicht geändert werden
 pi = pci;                   // Falsch: Wäre diese Zuweisung möglich, könnten
                             // Sie dem konstanten Wert *pci über *pi einen
                             // Wert zuweisen.



Ähnliche Regeln gelten für den Modifizierer volatile. Beachten Sie, dass const und volatile als Modifizierer für denselben Bezeichner verwendet werden können.