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 →