Ich versuche, die Werte von einem Array zu einem anderen zu kopieren, indem Sie streng Zeigerarithmetik verwenden. Dies ist der Code, den ich jetzt haben:Kopieren von Werten von einem Array in ein anderes in C mit Zeigerarithmetik
int *p;
int arraySize = 20;
int array[arraySize];
for (p = array; p< array+(sizeof(array)/sizeof(int)); p++){
int random = rand() % 200;
*p = random;
}
for (p = array; p< array+(sizeof(array)/sizeof(int)); p++){
printf("%d\t%x\n", *p, p);
}
//the code above works fine
printf("\n");
//grow the new array by one to insert value at end later
int array2[(arraySize+1)];
int *p2;
for(p2 = array2; p2< array2+(sizeof(array2)/sizeof(int)); p2++){
*(p2) = *(p);
}
for(p2 = array2; p2< array2+(sizeof(array2)/sizeof(int)); p2++){
printf("%d\t%x\n", *p2, p2);
}
Aber wenn ich den Code ausführen alles, was ausgegeben wird, ist 0 an jedem der Speicherplätze. Was mache ich falsch, das verhindert, dass die Werte kopiert werden?
'p' wird nicht inkrementiert. –
Das Problem mit Ihrem Code ist, dass es 'p2' ändert, aber niemals' p' ändert. Wählen, um als Tippfehler zu schließen. – dasblinkenlight
doing p ++ gibt Zufallszahlen gemischt mit einigen Nullen als Ausgabe in den Speicherplätzen – theplaid