Pointer und ++ ??
-
Nehmen wir an ich habe ein
char arrC[]= "Hallo";und ein
int arrI[]= {1,2,3,4,5};ein char ist ja 1 byte lang, und ein int 2 byte
wenn ich nun
arrC++;mache springt de rzeiger um 1 Byte, bei
arrI++;umd 2 Byte..
seh ich das richtig?
-
jo, wenn deine Angabe int = 2 Byte auf deiner Plattform stimmt.
-
ja oder halt 4 byte..
aber die bit/byte sprünge macht der compilter dann automatisch nach typ größe...
Man lernt nie aus;)
-
BorisDieKlinge schrieb:
seh ich das richtig?
Nee, arrC und arrI sind Arrays und wandeln sich somit in konstante Pointer um. Die kann man natürlich nicht verändern...
-
ok, hätte genauer lesen sollen, aber wären es Zeiger, würden die Adresse quasi um sizeof(*zeiger) inkrementiert.
-
d.h. auf elemente von arrC kann ich nur so druchlaufen:
for(...;...;n++) char elem= *(arrC+n); //bzw. char elem = arr[n]; }nicht so:
for(..;..;){ arrC++; char elem = *arrC; }???
-
Hi Boris, dein erster Code ist lustig -), soll wohl
for(...;...;n++) char elem = arrC[n]; }heißen?
Edit: Ok, Boris hat's gemerkt...
-
rüdiger schrieb:
Nee, arrC und arrI sind Arrays und wandeln sich somit in konstante Pointer um. Die kann man natürlich nicht verändern...
naja, eigentlich sind arrays überhaupt keine pointer (auch wenn man sie mit '*' ansprechen kann)...

-
BorisDieKlinge schrieb:
d.h. auf elemente von arrC kann ich nur so druchlaufen:
[...]???oder so:
for(char * p=arrC;...;c++) char elem= *p; }Zeiger sind hier genau wie die Iteratoren von den üblichen Containern.
container.begin() entspricht dabei arrC, container.end() entspreicht dabei arrC+längeVonArrC