Funktion copy und Felder < Softwaretechnik+Pro < Praktische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) überfällig | Datum: | 21:58 Mo 21.04.2008 | Autor: | Owen |
Aufgabe | Schreiben Sie eine Funktion
void copy(void *dest,void *src,int anz) {...}
Die Funktion kopiert den Inhalt eines Speicherbereichs von anz Bytes ab der
Anfangsadresse src in den Speicherbereich ab der Anfangsadresse dest.
Achten Sie darauf, dass Ihre Funktion auch dann richtig arbeitet, wenn sich
Quell- und Zielbereich ueberlappen!
Bei
int a[]={1,2,3,4,5,6,7,8,9,10};
muss das Feld nach
copy(a+2,a,5*sizeof(int));
den Inhalt 1,2,1,2,3,4,5,8,9,10 haben.
Nach
copy(a+2,a+4,4*sizeof(int));
fuer das urspruengliche a ist der Inhalt 1,2,5,6,7,8,7,8,9,10.
Das muss auch funktionieren, wenn a ein double Feld ist (dann natuerlich
sizeof(double)). |
Hallo Leute, ich hoffe, dass ich im richtigen Forum gelandet bin. Ich habe leider sehr wenig Ahnung von C++.
Ich verstehe zwar im Grunde genommen was ich machen soll, jedoch scheitere ich bereits an der Funktion "copy", da ich nicht weiß wie sie funktioniert, und somit den Inhalt des Feldes "1,2,1,2,3,4,5,8,9,10 " und "1,2,5,6,7,8,7,8,9,10" nicht nachvollziehen kann. Soweit ich weiß dient sizeof der Ermittlung des Speichers der für das Feld benötigt wird. Ich denke, dass vor dem Kopieren die Ermittlung der Speicherbereiches wichtig ist, damit genug Speicher zu Verfügung gestellt werden kann. Aber wie das direkt programmiert wird, das weiß ich nicht genau.
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 22:20 Mi 23.04.2008 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 00:55 Sa 03.05.2008 | Autor: | DwalinDE |
Es ist zu prüfen, ob der Targetbereich den Sourcebereich überlappt und ggfs. revers zu kopieren, also das letzte Element zuerst, um keine Elemente zu verlieren.
|
|
|
|