Zeiger mit ++ hochzählen?



  • Kann ich einen Zeiger mit ++ hochzählen?

    int index;
    char *zeiger; 
    char text[] = "einleipsieB ";
    zeiger = text;
    for(index=0;index<3;index++)
    {
    printf("%c", *zeiger);
    zeiger = zeiger++;
    }
    

    so funktioniert es nicht, wenn ich allerdings statt ++ eine +1 schreibe, dann schon, kann das evtl am compiler liegen?

    Gruß juniorcrew



  • Der Operator ++ erhöht den Wert der Variable persönlich. Je nachdem, ob du ihn als Prä- oder Postfix schreibst, erhältst du den neuen oder alten Wert des Ausdrucks.

    Einen Zeiger kann man auf eine der folgenden Arten erhöhen:

    zeiger++;
    ++zeiger;
    


  • Es heißt einfach zeiger++, nicht zeiger = zeiger++.
    Was vielleicht noch erwähnenswert ist, ist dass ++ und +1 bei Zeigern nicht um 1 hochzählt, sondern um ein Element. Also ein char *zeiger geht bei ++ oder +1 ein char weiter, was zufälligerweise 1 ist, weil sizeof(char) 1 ist. Wenn du einen int *zeiger um 1 hochzählsts wird er um sizeof(int) erhöht, das sind 4 oder 8 Byte üblicherweise.



  • Wenn ich ++ schreibe dann kommt bei der Ausgabe aber nur Kauderwelch heraus. Das was herauskommen soll, ist nur bei +1 der Fall, wie kann das denn dann sein? Wenn doch ++ = +1 ist?

    Gruß juniorcrew



  • noch'ne meinung:

    juniorcrew schrieb:

    ...
    zeiger = zeiger++;
    ...
    

    hihi, zeiger++ zählt zwar weiter, liefert aber den vorherigen wert zurück, d.h. 'zeiger = zeiger++' macht das hochzählen sofort zunichte (wenn's mal nicht undefiniertes verhalten ist).
    mach daher zum hochzählen 'zeiger++' oder 'zeiger = zeiger + 1' oder 'zeiger += 1', oder '++zeiger', was du am schönsten findet (wobei ich persönlich '++zeiger' sehr hässlich finde).
    🙂


Anmelden zum Antworten