next up previous contents index
Nächste Seite: 6.4 Dynamische Felder mittels Aufwärts: 6. Zeiger Vorherige Seite: 6.2 Zeigeroperatoren   Inhalt   Index


6.3 Zeiger und Felder - Zeigerarithmetik

Felder nutzen das Modell des linearen Speichers, d.h., ein im Index nachfolgendes Element ist auch physisch im unmittelbar nachfolgenden Speicherbereich abgelegt. Dieser Fakt erlaubt die Interpretation von Zeigervariablen als Feldbezeichner und umgekehrt.

{
  const int N = 10;
        int f[N], *pint;  // array and pointer
  
  pint = &f[0];           // init pointer
}

Feldbezeichner werden prinzipiell als Zeiger behandelt, daher ist die Programmzeile
pint = &f[0];
identisch mit
pint = f;
Folgerichtig stellen daher die Ausdrücke f[1] , *(f+1) , *(pint+1) , pint[1] den identischen Zugriff auf das Feldelement f1 dar. (siehe Ex630.cc)

\begin{center}\vbox{\input{kap631.pstex_t}
}\end{center}

Die Adresse welche durch (pint+1) dargestellt wird ergibt sich zu (Adresse in pint) + sizeof(int) . Dabei bezeichnet int den Datentyp, auf welchen der Zeiger pint verweist. Der Zugriff auf andere Feldelemente fi, i = 0...N - 1 ist analog.

Die folgenden Operatoren sind auf Zeiger anwendbar:

Zur Demonstration betrachten wir ein Beispiel, in welchem ein Feld erst auf konventionelle Weise definiert und initialisiert wird um danach mittels Zeigeroperationen ausgegeben zu werden. (siehe Ex630.cc)

\begin{center}\vbox{\input{kap632.pstex_t}
}\end{center}

//	Pointers and arrays
#include <iostream.h>
main()
{
  const int N=10;
  double    x[N], *px, *pp, *pi;
  int       i;
  
//                    initialize x
  px = x;
  for (i = 0; i < N; i++ )
   {
     *(px+i) = (i+1)*(i+1);    // x[i] = ...
   } 
//              output x; 
//                       pointer pi as loop variable
  pp = x+N-1;         // pointer at last element of x			
  for ( pi = x; pi <= pp; pi++)
   {
     cout << "  " << *pi << endl;
   }
}


next up previous contents index
Nächste Seite: 6.4 Dynamische Felder mittels Aufwärts: 6. Zeiger Vorherige Seite: 6.2 Zeigeroperatoren   Inhalt   Index
Gundolf Haase 2004-01-15