Zeiger und Zeiger auf Zeiger



  • hallo,

    was ist hier Unterschied, und welche Vorteile und Nachteile ergeben sich dabei ?

    1.Methode
    
    int* Function()
    {
        int *p = new int;
        return p;
    }
    

    und

    // 2.Mehtode
    
    int *p;
    
    void Function(int** p)
    {
        *p = new int;
    }
    

    in beiden Fällen habe ich doch den p Zeiger mit einer Adresse belegt
    nur dass ich die funktionen verschieden aufrufe:

    // 1.Methode
    int *x = Function();
    
    // 2.Methode
    int* x = 0;
    Function(&x);
    

    bei 2.Methode muss man auch mehr schreiben...1.Methode hingegen ist viel kompakter, und ich muss den Zeiger nciht zuerst mit 0 initialisieren



  • WeiseCoder schrieb:

    und ich muss den Zeiger nciht zuerst mit 0 initialisieren

    Musst du nicht, weil der Wert sofort durch den pointer zum neuen Speicherbereich ersetzt wird und der alte nicht gebraucht wird. Du schreibst also gleich viel.

    Wie du das machst ist egal. Im endeffekt sind beide Methoden gleich. Ich persöhnlich rate dir allerdings ab eine Funktion zu schreiben, die einen Neuen Speicherbereich zurück gibt, bzw. übergibt, denn bei solchen konstruktionen vergisst man schnell, dass man den Speicher auch wieder freigeben muss.



  • benutz doch auto_ptr für so was!


Anmelden zum Antworten