C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Frage zu einem Funrkionskopf

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German)
View previous topic :: View next topic  
Author Message
Nico Render
Guest





PostPosted: Sun Jan 29, 2006 1:02 pm    Post subject: Frage zu einem Funrkionskopf Reply with quote



Hallo,
da ich ein Neuling in C++ bin, habe ich mal eine Frage zu Zeigern und
Funktionen. Gegeben sei der Kopf: void *memcpy(void *feldadr1, const void
*feldadr2, size_t groesse). Diese Funktion kopiert groesse Elemente des
Feldes beginnend bei feldadr2 in das Feld beginnend bei feldadr1. Rückgabe
ist feldadr1. Grundsätzlich int *funktion(int a) gibt doch eine Adresse bzw.
einen Zeiger vom Typ int zurück, oder? Wenn das stimmt, was soll denn void
als Datentypangabe bei den Paramtern und was soll denn size_t für ein
Datentyp sein??

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Thomas Maeder
Guest





PostPosted: Sun Jan 29, 2006 7:00 pm    Post subject: Re: Frage zu einem Funrkionskopf Reply with quote



"Nico Render" <render34 (AT) aol (DOT) de> writes:

Quote:
da ich ein Neuling in C++ bin, habe ich mal eine Frage zu Zeigern und
Funktionen. Gegeben sei der Kopf: void *memcpy(void *feldadr1, const void
*feldadr2, size_t groesse). Diese Funktion kopiert groesse Elemente des
Feldes beginnend bei feldadr2 in das Feld beginnend bei feldadr1.

.... und funktioniert nur korrekt, wenn die beiden Bereiche sich nicht
überlappen.


Quote:
Rückgabe ist feldadr1. Grundsätzlich int *funktion(int a) gibt doch
eine Adresse bzw. einen Zeiger vom Typ int zurück, oder?

Ja.


Quote:
Wenn das stimmt, was soll denn void als Datentypangabe bei den
Paramtern

memcpy() ist eine alte Funktion aus der Standard C-Bibliothek. In C
gibt es keine Templates; void * wurde verwendet, damit die Funktion
trotzdem für das Kopieren von Feldern mit beliebigem Elementtyp
verwendet kann.

Wobei "beliebig" sich (im wesentlichen) auf die Typen beschränkt,
welche in C vorkommen können. Wenn Du in einem C++-Programm memcpy()
für das Kopieren eines Felds verwendest, dessen Elementtyp nicht ein
sog. "POD-Typ" (plain old data) ist, hat das Programm undefiniertes
Verhalten.

Es empfiehlt sich deshalb, in C++-Programmen statt memcpy() das
Standardbibliotheks-Template copy() zu verwenden. Dieses kann für das
Kopieren von Sequenzen (einschliesslich Felder) jedes kopierbaren Typs
verwendet werden.


Quote:
und was soll denn size_t für ein Datentyp sein??

size_t ist u.a. der Typ von sizeof-Ausdrücken. Es ist ein
vorzeichenloser Typ, der für die Angabe der Grösse von Objekten und
Feldern verwendet werden kann.

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.