C-Programmierung

Zeigerarithmetik

Arrays und Zeiger | | Arrays als Parameter

Addiert man eine ganze Zahl i auf einen Zeiger a via a+i so bekommt man die Adresse des i-ten Elements, wobei i den Index darstellt.

Dies bezeichnet man als Zeigerarithmetik.

  • Nur die Addition und Subtraktion von Zeigern und Ganzahlen ist erlaubt.
  • Die Subtraktion von zwei Zeigern entspricht der Index-Differenz
  • Der Vergleich von zwei Zeigern entspricht dem Index-Vergleich
  • Keine Multiplikation, Division, Shift, etc.

Wird also der Zeiger a+i dereferenziert via *(a+i) so erhält man den Wert des i-ten Elements.

Es gilt weiterhin:

  • Die AusdrĂĽcke a[i] und *(a+i) sind äquivalent.
  • Die Adresse des i-ten Elements a+i erhält man auch mit dem Adressoperator &a[i].

Q Wozu ist *(a+0) äquivalent?

Erster Index

Q Was läuft bei *a+i schief?

Klammerung

Q Wann verwendet man a+i und wann &a[i]?

Lesbarkeit

Arrays und Zeiger | | Arrays als Parameter

Options: