Pointer Swap Anfängerfrage



  • supertux schrieb:

    natürlich geht in die Hose, bei dir nicht, nur zufällig, weil beide Puffer gleich groß sind:

    Ja, ich sehe ein, da ist der Wurm drin.
    <These>
    Die Arrays char a [] und char b [] lassen sich also nicht so ohne weiteres swappen.
    </These>
    🙂



  • The Tester schrieb:

    supertux schrieb:

    natürlich geht in die Hose, bei dir nicht, nur zufällig, weil beide Puffer gleich groß sind:

    Ja, ich sehe ein, da ist der Wurm drin.
    <These>
    Die Arrays char a [] und char b [] lassen sich also nicht so ohne weiteres swappen.
    </These>
    🙂

    wie ich schon sagte, es hängt davon ab, ob du die Adresse umtauschen willst oder die Inhalte worauf sie zeigen. Das zweite ist natürlich möglich.



  • The Tester schrieb:

    Die Arrays char a [] und char b [] lassen sich also nicht so ohne weiteres swappen.

    wenn beide gleich lang sind, dann kannst du einfach die einzelnen zeichen tauschen. sind sie nicht gleich lang, dann musste natürlich irgendwie tricksen.
    🙂



  • Heißt das wenn ich zB: mit Array von Strings "Daten" einrichte in Form :
    ["ba","a","c"]
    und diese dan lexikographisch Ordnen will:
    ["a","ba","c"]
    Das ich nicht einfach den Pointer von Daten[0] mit dem von Daten[1] spawen kann sondern muss ein in neues passendes Array erzeugen und diese dann Füllen ?
    Gehts echt nicht geschickter ?

    MFG Deka



  • Deka schrieb:

    Heißt das wenn ich zB: mit Array von Strings "Daten" einrichte in Form :
    ["ba","a","c"]
    und diese dan lexikographisch Ordnen will:
    ["a","ba","c"]
    Das ich nicht einfach den Pointer von Daten[0] mit dem von Daten[1] spawen kann sondern muss ein in neues passendes Array erzeugen und diese dann Füllen ?
    Gehts echt nicht geschickter ?

    MFG Deka

    Doch, z.B. mit std::vector und std::sort...



  • Deka schrieb:

    Heißt das wenn ich zB: mit Array von Strings "Daten" einrichte in Form :[...]Das ich nicht einfach den Pointer von Daten[0] mit dem von Daten[1] spawen kann sondern muss ein in neues passendes Array erzeugen und diese dann Füllen ?

    Nein, das heißt es nicht.



  • Deka schrieb:

    Heißt das wenn ich zB: mit Array von Strings "Daten" einrichte in Form :
    ["ba","a","c"]
    und diese dan lexikographisch Ordnen will:
    ["a","ba","c"]
    Das ich nicht einfach den Pointer von Daten[0] mit dem von Daten[1] spawen kann sondern muss ein in neues passendes Array erzeugen und diese dann Füllen ?
    Gehts echt nicht geschickter ?

    MFG Deka

    liest denn keiner, was ich schreibe? Inhalt des Arrays mit dem Inhalt eines anderen Arrays zu swappen ist natürlich möglich. Worauf die arrays "zeigen" [1]
    kann man nicht ändern. Bitte lesen.

    [1] arrays sind keine Zeiger, aber man kann sie implizit als Zeiger benutzen



  • Deka schrieb:

    Heißt das wenn ich zB: mit Array von Strings "Daten" einrichte in Form :
    ["ba","a","c"]
    und diese dan lexikographisch Ordnen will:
    ["a","ba","c"]
    Das ich nicht einfach den Pointer von Daten[0] mit dem von Daten[1] spawen kann sondern muss ein in neues passendes Array erzeugen und diese dann Füllen ?
    Gehts echt nicht geschickter ?

    MFG Deka

    Wenn du das so schreibst:

    char *A[] = { "a","ba","c"};
    

    Dann hast es du wieder mit Zeigern zu tun, die kannst du swappen.



  • Wenn du das so schreibst:

    char *A[] = { "a","ba","c"};
    

    Wobei der Praxisbezug stark gegen 0 gehen dürfte.
    🙂



  • praktisch 0 schrieb:

    Wenn du das so schreibst:

    char *A[] = { "a","ba","c"};
    

    Wobei der Praxisbezug stark gegen 0 gehen dürfte.
    🙂

    wieso? Und wenn ich diese Liste sortieren will? Sortieren ist sehr praxisbezogen.



  • supertux schrieb:

    wieso? Und wenn ich diese Liste sortieren will? Sortieren ist sehr praxisbezogen.

    Diese Liste kann ich ja gleich sortiert definieren. Sortieren wird man praktisch eher dynamisch erzeugte Strings (malloc), die von irgendwo eingelesen werden. 🙂



  • praktisch 0 schrieb:

    Diese Liste kann ich ja gleich sortiert definieren. Sortieren wird man praktisch eher dynamisch erzeugte Strings (malloc), die von irgendwo eingelesen werden. 🙂

    Jo, aber praktisch ist das Latte. Der Swapvorgang bleibt der selbe.



  • praktisch 0 schrieb:

    Diese Liste kann ich ja gleich sortiert definieren. Sortieren wird man praktisch eher dynamisch erzeugte Strings (malloc), die von irgendwo eingelesen werden. 🙂

    nicht unbedingt. Was ist wenn man die sortierte Liste später braucht, also später als die unsortierte? Sortieren ist nicht die einzige Listeoperation, die es gibt.

    praktisch 0 schrieb:

    Sortieren wird man praktisch eher dynamisch erzeugte Strings (malloc), die von irgendwo eingelesen werden. 🙂

    sagt wer?


Anmelden zum Antworten