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).