Inhalt Pointer überschreiben

jumpfunky

Grünschnabel
Hallo,
ich habe zwei uint32 Pointer x und y. Nun möchte ich den Inhalt von der im Speicherbereich von y steht in den Speicherbereich von x schreiben.

Reicht x = y aus oder wechsele ich damit nur den Speicherbereich auf den x zeigt?

Viele Grüße
jump
 
Is korrekt ... muss de Dereferenzieren:
C++:
#include <algorithm>

uint32_t* ptr_x = /* ... */;
uint32_t* ptr_y = /* ... */;

// vertauschen
std::swap(*ptr_x, *ptr_y);
 
Geht das auch nur in eine Richtung? Mit Swap vertausche ich beides, oder?

Hm,

ich hab mir nun meine eigene Methode dafür geschrieben, die sollte die gewünscht Funktionalität erfüllen, oder?

swap2(uint32& a, uint32& b)
{
a = b;
}
 
Hi.
jumpfunky hat gesagt.:
Hm,

ich hab mir nun meine eigene Methode dafür geschrieben, die sollte die gewünscht Funktionalität erfüllen, oder?

swap2(uint32& a, uint32& b)
{
a = b;
}
Das kommt drauf an wie du die Funktion aufrufst. Allerdings würde sie vom Namen her ihrer Funktionalität nicht nachkommen, denn sie sollte ja einen Swap durchführen...

Wie devDevil bereits sagte, du mußt die Zeiger dereferenzieren:
C:
uint32 *a = /* .. */;
uint32 *b = /* ... */;

*a = *b;
Gruß
 
Die Funktion swap2 soll nur den inhalt des Speicherbereichs von y in den speicherbereich x schreiben und wird folgendermaßen aufgerufen;

swap2(*a,*b)


Nur um sicher zu gehen:
*a = *b reicht für mein Anliegen aus? Dann kann ich mir meine swap2 Methode auch sparen!

Vielen Dank schonmal,
jump

PS: Spielt es eine Rolle wenn b in einem vector steht? quasi *a = *vector[0]
 
Zuletzt bearbeitet:
Die Funktion swap2 soll nur den inhalt des Speicherbereichs von y in den speicherbereich x schreiben
Ja, dann solltest du die Funktion aber nicht swap2 nennen. Wenn du eine Funktion zum Raktenabschuss hast und nennst diese "spiele_solitaire", wird es evtl. früher oder später zu Problemen kommen... ;)
Nur um sicher zu gehen:
*a = *b reicht für mein Anliegen aus? Dann kann ich mir meine swap2 Methode auch sparen!
Allerdings.
PS: Spielt es eine Rolle wenn b in einem vector steht? quasi *a = *vector[0]
Nein, das macht keinen Unterschied.

Gruß
 
Zurück