pointer
-
ich habe denke ich eine ziemlich elementare frage zu zeigern..
angenommen ich habe folgendes:int y=5; int *x=&y;hier habe ich soweit ich weiß, dass mein Zeiger x auf die Adresse von y zeigt.
x++;was macht nun diese anweisung?
-
So ziemlich das gleiche wie
x = (int*)((char*)x + sizeof(*x))
-
sorry das sagt mir grade auch nichts..
kann man das irgendwie in worte fassen, was da geschieht?
-
es inkrementiert den Zeiger im Speicher um 4 Byte (weil dies ein Zeiger auf int ist) int belegt bei manchen Systemen 2 oder 4 Byte). Was an dieser Addresse steht ist 'undefiniert'. Normalerweise setzt man die Zeigerarithmetik bei Arrays ein da man Zeiger inkrementieren/dekrementieren muss um an die einzelenen Elemente zu kommen.
Nunja ich bin kein C Experte das sind andere hier..

-
Zeiger sind ganzzahl-artige Typen. Wenn du 1 dazuzählst, zeigen sie auf die nächstfolgende Adresse, ganz gleich, was dort ist und wem es gehört.
-
hier habe ich soweit ich weiß, dass mein Zeiger x auf die Adresse von y zeigt.
Nein.
x zeigt auf y.
x ist die Adresse von y.
-
flamer schrieb:
Zeiger sind ganzzahl-artige Typen. Wenn du 1 dazuzählst, zeigen sie auf die nächstfolgende Adresse, ganz gleich, was dort ist und wem es gehört.
Der Zeiger wird um die Anzahl Bytes inkrementiert, die der Typ hat, auf die er grade Zeigt.
Dadurch werden außer beim char-Zeiger Adressen übersprungen.