Navigation

2.3.4 Zeigerarithmetik

Zeigerarithmetik erfolgt immer in Einheiten des Typs, auf den ein Zeiger verweist. Folgende Operationen mit Zeigern sind möglich:
zeiger1 op zeiger2     für op:   -   -=   ==   !=   <   <=   >   >=
Sinnvolle Ergebnisse werden nur erzielt, wenn zeiger1 und zeiger2 auf das gleiche Feld verweisen. Vom Compiler oder zur Laufzeit erfolgen keine entsprechenden Kontrollen!
zeiger op integer     für op:   +   -   +=   -=   ++   --
Es wird nicht kontolliert ob "Feldgrenzen" über- oder unterschritten werden. Derartige Fehler führen zur Laufzeit nur dann zum Programmabbruch, wenn der Adressraum des Prozesses verlassen wird.

BEISPIELE/b234.c: 

#include <stdio.h>

int catlen(a, b)           /* Verketten zweier Zeichenfelder und */
char *a, *b;               /* Berechnung der Zeichenanzahl */
{
     char *p;
    
     p=a;                                       /* Anfang Feld a */
     while(*p)                             /* Suchen Ende Feld a */
         p++;
     while(*p++ = *b++)              /* Kopieren b an Ende von a */
         ;           
     return(--p - a);                   /* Ende - Anfangsadresse */
}                               /* ausser Endekennzeichen ('\0') */

main()
{
    char f1[512], f2[512];

    printf("String f1 eingeben:");
    scanf("%s",f1);
    printf("String f2 eingeben:");
    scanf("%s",f2);
    printf("Laenge f1 & f2: %d\n", catlen(f1,f2));
    printf("f1 nach catlen %s\n", f1);
}    

Navigation