Doppel Pointer / Pointer in Funktion ändernq



  • Daß das Grundsätzlich fürchterlich ist, ist dir eh klar, gell?

    Ja, das ganze stinkt zum Himmel. Das Grundkonzept , dafür ein Array zu nehmen und dann nicht mit INdex zu arbeiten ist Mist.
    Wäre eine einfach verkettete Liste für sowas nicht besser geeignet?

    void del( int *data, size_t del_pos, int **pos )
    {
        for( data += del_pos; data + 1 != *pos; ++data )
            *data = data[ 1 ];
    
        (*pos)--;
    }
    

    ** => Wert des Zeigers
    * => "Originalzeiger" ?
    (*pos)--; Originazeiger bearbeiten, ok // Hatte ich als erstes gemacht, aber die Klammer weggelassen...
    pos-- ; => was macht dann das?



  • Hab den Originalcode nochmal gefunden.

    WAHH.. ich habe (ptr)-- geschrieben. Die sch... Klammerei bei den 2....

    Gibt´s da nicht ne Eselsbrücke oder ne "bessere " Erklärung?



  • db_pointer schrieb:

    Gibt´s da nicht ne Eselsbrücke oder ne "bessere " Erklärung?

    Du willst zuerst ptr dereferenzieren um danach seinen Pointee zu inkrementieren.



  • Danke erstmal, muss mir das besser merken.

    Noch ne frage... was würde ptr-- machen?



  • int foo;
    int * ptr = &foo;
    int ** ptrptr;
    
    ptrptr--; // ptrptr zeigt danach auf einen int* "vor" ptr ...
    

    Der Speicher gehört dir aber nicht.



  • besten Dank, ich glauch so trichter ich es mir ein.

    Wäre eine verkettete Liste ein sinnvolle Lösung für eine solche Aufgabe, oder spricht es aus der Praxis eher für etwas anders?



  • db_pointer schrieb:

    Wäre eine verkettete Liste ein sinnvolle Lösung für eine solche Aufgabe, oder spricht es aus der Praxis eher für etwas anders?

    Die Parxis spricht zu 99% zu einem Array, das wachsen kann. (in C++ std::vector).

    Fast nie zu einer verketten Liste.

    Dann eher noch zu einer Mischform, sagen wir mal 4096-Byte-große Happen werden verkettet, innerhalb der Happen wird wie im Array gewachsen, immer erst wenn ein Happen voll ist, wird eine neuer Happen gemalloct und reinverkettet. (std::deque ider der anderen Sprache halt).



  • Die Parxis spricht zu 99% zu einem Array, das wachsen kann. (in C++ std::vector).

    => Wäre da in C das stichwort dynamisches Array mit malloc / realloc oder?

    Gibt´s überhaupt praktische Anwendungen für verkettete Listen?
    Wie schauts mit den binären Bäumen aus... ??



  • db_pointer schrieb:

    Gibt´s überhaupt praktische Anwendungen für verkettete Listen?

    Hashtables, zum Behandeln von Kollissionen
    Free List bei Memory Management
    FAT Dateisystem besteht aus LLs
    "Arrays", bei denen du mitten drin etwas einfügen oder löschen können willst, ohne die Elemente aufrücken zu lassen


  • Mod

    db_pointer schrieb:

    Wie schauts mit den binären Bäumen aus... ??

    Die (und viele andere baumartige Strukturen) haben haufenweise praxisrelevante Anwendungen.


Anmelden zum Antworten