tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
736
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    jumpfunky jumpfunky ist offline Grünschnabel
    Registriert seit
    May 2009
    Beiträge
    3
    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
     

  2. #2
    Avatar von devDevil
    devDevil devDevil ist offline Mitglied Platin
    Registriert seit
    Jun 2005
    Beiträge
    662
    Is korrekt ... muss de Dereferenzieren:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    
    #include <algorithm>
     
    uint32_t* ptr_x = /* ... */;
    uint32_t* ptr_y = /* ... */;
     
    // vertauschen
    std::swap(*ptr_x, *ptr_y);
     

  3. #3
    jumpfunky jumpfunky ist offline Grünschnabel
    Registriert seit
    May 2009
    Beiträge
    3
    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;
    }
     

  4. #4
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.
    Zitat Zitat von jumpfunky Beitrag anzeigen
    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:
    Code c:
    1
    2
    3
    4
    
    uint32 *a = /* .. */;
    uint32 *b = /* ... */;
     
    *a = *b;
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  5. #5
    jumpfunky jumpfunky ist offline Grünschnabel
    Registriert seit
    May 2009
    Beiträge
    3
    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]
    Geändert von jumpfunky (23.05.09 um 19:34 Uhr)
     

  6. #6
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von jumpfunky Beitrag anzeigen
    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...
    Zitat Zitat von jumpfunky Beitrag anzeigen
    Nur um sicher zu gehen:
    *a = *b reicht für mein Anliegen aus? Dann kann ich mir meine swap2 Methode auch sparen!
    Allerdings.
    Zitat Zitat von jumpfunky Beitrag anzeigen
    PS: Spielt es eine Rolle wenn b in einem vector steht? quasi *a = *vector[0]
    Nein, das macht keinen Unterschied.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. [C++, Qt] Inhalt einer datei überschreiben
    Von Ischterai im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 07.07.09, 09:25
  2. Antworten: 3
    Letzter Beitrag: 04.05.09, 18:54
  3. Antworten: 4
    Letzter Beitrag: 07.07.06, 13:34
  4. Antworten: 9
    Letzter Beitrag: 22.11.05, 11:25
  5. Antworten: 2
    Letzter Beitrag: 16.11.05, 00:02

Stichworte