Programmierung · 3 min read · Nov 15, 2025

Linux C Programmierung Tutorial Teil 20 - Zeigeradressarithmetik

In unserem vorherigen Tutorial dieser fortlaufenden C-Programmierreihe haben wir Zeiger etwas detaillierter besprochen. Um diese Diskussion zu erweitern, sind wir hier mit einigen weiteren diskussionswürdigen Konzepten zu Zeigern. Also, ohne weitere Umschweife, lassen Sie uns beginnen.

Zeigeradressarithmetik in C

Zunächst konzentrieren wir uns auf die Adressarithmetik, wenn wir mit Zeigern arbeiten. Wie wir in unserem vorherigen Tutorial besprochen haben, wenn Sie einen Zeiger haben, der auf ein Array zeigt (sagen wir, den Anfang davon), ist es sehr einfach, auf die Elemente dieses Arrays zuzugreifen. Hier ist ein Beispiel:

#include   
  
int main()  
{  
    char arr[]={'a','b','c','d'};  
    int a[]={1,2,3,4};  
   
    char *ptr = arr;  
    int *p = a;  
   
    for(int i=0; i

In diesem Code haben wir zwei Arrays - ‘arr’ und ‘a’. Während das erste ein Zeichenarray ist, ist das zweite ein Ganzzahlarray. Dann haben wir zwei Zeiger, die auf diese Arrays zeigen - ‘ptr’ und ‘p’, jeweils. Dann gibt es ein paar ‘for’-Schleifen, in denen wir die aktuelle Adresse, auf die der Zeiger zeigt, und den Wert, der an dieser Adresse enthalten ist, ausgeben.

Hier ist die Ausgabe dieses Codes auf meinem Rechner:

 Zeichenzeiger zeigt auf 726409312, mit Wert a   
 Zeichenzeiger zeigt auf 726409313, mit Wert b   
 Zeichenzeiger zeigt auf 726409314, mit Wert c   
 Zeichenzeiger zeigt auf 726409315, mit Wert d   
 Ganzzahlzeiger zeigt auf 726409296, mit Wert 1   
 Ganzzahlzeiger zeigt auf 726409300, mit Wert 2   
 Ganzzahlzeiger zeigt auf 726409304, mit Wert 3   
 Ganzzahlzeiger zeigt auf 726409308, mit Wert 4

Jetzt ist es bemerkenswert, dass die Adressen, die in der Ausgabe gedruckt werden. Für das Zeichenarray hat das Hinzufügen von ‘1’ zum Zeiger ihn zur nächsten Adresse erhöht, aber für ein Ganzzahlarray hat das Hinzufügen von ‘1’ zum Zeiger ihn 4 Adressen weiter springen lassen. Warum ist das so?

Nun, das hängt alles vom Typ des Zeigers ab. Ein Zeichenzeiger springt immer die Anzahl der Bytes, die ein Zeichen belegt, was normalerweise 1 ist. Ebenso springt ein Zeiger auf eine Ganzzahl normalerweise 4 Bytes, wenn er um 1 erhöht wird. Das sollte den Unterschied in den Sprüngen von Zeichen- und Ganzzahlzeigern in der obigen Ausgabe erklären.

Wenn wir mit der Zeigerarithmetik fortfahren, können Zeiger in Vergleichsausdrücken in bestimmten Fällen verwendet werden. Zum Beispiel, wenn Sie bestätigen möchten, ob ein Zeiger ‘ptr’ auf ein Element eines Arrays ‘arr’ (Größe ‘size’) zeigt, können Sie den Vergleich auf folgende Weise durchführen:

if((ptr >= arr) && (ptr < (arr + size))) 

Effektiv überprüft der obige Ausdruck, ob die Adresse, die der Zeiger hält, eine der Elemente ist.

Außerdem, wenn es mehrere Zeiger gibt, die auf Elemente desselben Arrays zeigen, können Sie die folgenden Vergleichsoperatoren verwenden: ==, !=, < und >=. Tatsächlich können Sie in diesen Fällen auch Zeiger subtrahieren. Hier ist ein Beispiel:

#include   
  
int main()  
{  
    char arr[]= "Willkommen bei HowtoForge";  
   
    char *ptr = arr;  
    char *p = arr;  
   
    while(*p != '\0')  
   {  
      p++;  
   }  
   
   printf("\n Länge des Strings ist %d", (p - ptr));  
   
   return 0;  
}

In diesem Programm haben wir sichergestellt, dass ein Zeiger auf das erste Element des Arrays zeigt, während der zweite Zeiger kontinuierlich erhöht wird, bis er auf das letzte Element zeigt (das ‘\0’ in konstanten Zeichenfolgen ist).

Dann, da wir es hier mit Zeichen zu tun haben (die jeweils ein Byte belegen), konnten wir durch Subtrahieren der Adresse, auf die der erste Zeiger zeigt, von der Adresse, auf die der zweite Zeiger zeigt, die Anzahl der Zeichen finden, die, wenn Sie sehen, die genaue Länge des Strings ist.

HINWEIS: Beachten Sie, dass Operationen wie Addition, Multiplikation, Division und mehr ungültig sind, wenn es um Zeiger geht. Auch die Art der akzeptablen Operationen, die wir bisher aufgelistet haben, sind nur gültig, wenn die Zeiger vom gleichen Typ sind und auf Elemente desselben Arrays zeigen.

Fazit

Nachdem wir grundlegende Zeigerkonzepte im vorherigen Tutorial besprochen haben, haben wir das Konzept der Zeiger hier durch die Diskussion der Zeigeradressarithmetik weiter ausgebaut. Wir empfehlen Ihnen, das, was wir hier besprochen haben, in Form von Programmen auf Ihrem Rechner zu üben. Und falls Sie irgendwelche Zweifel oder Fragen haben, zögern Sie nicht, unten einen Kommentar zu hinterlassen.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.