Pointer-Problem



  • Tut mir Leid, wenn diese Frage vielleicht schon anderswo gestellt wurde, aber ich bin ein wenig in Eile. Ich habe eine lokale Variable double *alpha, die auf ein double-array zeigt.

    void alphaEinfuegen(double *alpha, double zahl, int anzahl){
    double *tmp = new double[anzahl];
    if(anzahl == 1){
    alpha[0] = zahl;
    }else{
    for(int i = 0; i < (anzahl - 1); i++){
    tmp[i] = alpha[i];
    }
    tmp[anzahl - 1] = zahl;
    delete [] alpha;
    alpha = tmp;
    }
    }

    zahl und anzahl sollen nur per Value übergeben werden, aber mit alpha bekomme ich bei delete Probleme. Weiß jemand, wie das richtig heißen müsste?



  • Du übergibst den Zeiger selbst auch byValue, dadurch bleibt der äußere Zeiger unverändert. Beispiel:

    void zeigr( char* a) {
       char* b = new char[10];
       sprintf(b, "Welt");
       delete[] a;
       a = b;
    }
    
    int main() {
       char* a = new char[10];
       sprintf(a, "Hallo");
       zeigr(a);
       delete [] a;
    }
    

    Führt garantiert zum Absturz.

    Du muß entwerder den Zeiger per Referenz übergeben oder als Rückgabewert der Funktion benutzen.



  • Ah, vielen Dank. Das mit dem Pointer-Pointer hat funktioniert. 😃


Anmelden zum Antworten