Pointer inkrementierung

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Pointer inkrementierung

Beitrag von cloidnerux » Do Aug 13, 2009 3:46 pm

Ich habe jezt mal eine etwas banale Frage:
Wenn ich einen Pointer auf uint32 habe, und dann Ausführe, wird dann um 1Byte weitergezält oder um 4?
p += 1;
Und wird hier auch um 1 byte weitergezält oder um 4??

MfG cloidnerux.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Pointer inkrementierung

Beitrag von Xin » Do Aug 13, 2009 3:51 pm

Pointer werden immer in der Größe ihrer Datensätze verändert.
p++; ist also Adresse von + sizeof( uint32 ).
Selbiges gilt für p+=1: 1 * sizeof( uint32 ).

Wäre p ein Zeiger auf eine struct foo, so würde p um sizeof( struct foo ) verschoben.
Wenn Du Byteweise vorgehen möchtest, musst Du zuerst auf einen Datentyp casten, der 1 Byte groß ist, z.B. (char *)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Pointer inkrementierung

Beitrag von cloidnerux » Do Aug 13, 2009 4:05 pm

Wenn Du Byteweise vorgehen möchtest, musst Du zuerst auf einen Datentyp casten, der 1 Byte groß ist, z.B. (char *)
Achso, gut. Danke für die Antwort.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Antworten