Konstante Zeiger in C (Konstante Zeiger in C), Lektion, Seite 723269
https://www.purl.org/stefan_ram/pub/konstante_zeiger_c (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
C-Kurs

Konstante Zeiger in C 

Ein konstanter Zeiger wird deklariert, indem das »const« hinter  das letzte »*«, aber vor  den Namen des Zeigers geschrieben wird. Es handelt sich hierbei um nichts anderes als eine konstante Variable, wie sie schon früher beispielsweise mit »int const i = 12;« festgelegt wurde.

Ein konstanter Zeiger kann – wie andere konstante Variablen – nicht  verändert werden.

main.c

#include <stdio.h>

int main( void )
{ int i = 27;
int * const p = &i;
printf( "%d\n", *p );
printf( "%d\n", i );}

stdout
27
27

Schreibzugriffe  über einen konstanten Zeiger sind aber im allgemeinen erlaubt!

Durch das »const« vor dem »p« wird »p =« verboten, nicht aber »*p =« (dazu wäre ein »const« vor dem Sternchen »*« nötig.)

main.c

#include <stdio.h>

int main( void )
{ int i = 27;
int * const p = &i;
printf( "%d\n", *p );
*p = 40; /* Schreibzugriff */
printf( "%d\n", *p );
printf( "%d\n", i ); }

stdout
27
40
40

Bei einem konstanten Zeiger »p« gilt also im allgemeinen:

»*p = « ist im allgemeinen erlaubt.
»p = « ist nicht erlaubt.

Konstante Lesezeiger

Es ist auch möglich, einen Lesezeiger  als konstanten Zeiger festzulegen. Das bedeutet, daß dieser Zeiger nicht verändert werden darf, und auch nur zum Lesen verwendet werden darf.

Bei einem konstanten Lesezeiger »p« gilt also:

»*p = « ist nicht erlaubt, da Lesezeiger.
»p = « ist nicht erlaubt, da konstant.

In »int const * const p = &i;« legt das erste »const« fest, daß »p« ein Lesezeiger ist. Das zweite »const« legt fest, daß »p« ein konstanter Zeiger ist.

main.c

#include <stdio.h>

int main( void )
{ int i = 27;
int const * const p = &i;
printf( "%d\n", *p );
printf( "%d\n", i ); }

stdout
27
27

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723269 stefan_ram:723269 Konstante Zeiger in C Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723269, slrprddef723269, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/konstante_zeiger_c