Benötige dringend hilfe! Zeiger übergabe!



  • Hallo erstmal und frohe Ostern!

    Ich habe immer noch Problem mit Zeigern.
    hier ist mein Problem:

    Ich möchte in der Main-Funktion ein Array mit der Demension 8 festlegen, in den ich einen Text speichern kann. Dieser Text soll aber für eine andere Funktion die ich aus der Main Funktion aufrufe nutzbar sein.

    Das heißt ich muss es der Funktion als Parameter übergeben, weil ich keine globalen Variablen nutzen möchte.

    Nun muss ich doch ein Zeiger auf das Array setzen und diesen Zeiger dann als Parameter übergeben oder?

    ich dacht das so in etwas:

    void test(char&);

    int main()
    { char S1[8]={"Paul"}, *zgr;
    zgr=S1;
    test(&S1);
    getch();
    return 0;
    }
    void test(char *hzgr)
    {
    cout<<hzgr;
    getch();
    }

    Wo ist das Problem bzw. mein Denkfehler!

    Danke schon mal im vorraus!



  • Zum einen stimmt deine test-Forward-Deklaration nicht mit der test-Funktion überein. Sollte beides void test(char*) sein.

    Ausserdem ist 'S1' bereits ein Zeiger der auf das Feld zeigt. Heißt du darfst nicht nochmal bei der Übergabe die Adresse ermitteln.

    void test(char* x) { cout<<x; }
    
    int main() {
      char S1[] = "Paul";
      test(S1);
    }
    

    [ Dieser Beitrag wurde am 20.04.2003 um 15:16 Uhr von DrGreenthumb editiert. ]



  • Danke erstmal bin schon ein stück weiter! Nun allerdings mein leztes Problem. (erstmal :p)

    Sagen wir ich habe es nun so:

    void test(char* x) {
    cout<<x;
    return &x; //Wie über gebe ich dann den neuen wert zurück!
    }

    int main() {
    char S1[] = "Paul", S2[8];
    S2=test(S1);
    cout<<S2; //so das hier dann wieder Paul ausgegeben wird
    }

    ???

    Kann mir da noch mal wer helfen?



  • Mit &x gibst du die Adresse vom Zeiger zurück.
    Du müstest return x; schreiben, aber dann zeigen S1 und S2 auf den selben
    Speicherbereich.
    Wenn in S2 einen eigenen "Paul" besitzen soll must du Paul in S2 reinschreiben.

    void test(char* x) { 
    cout<<x;
    }
    
    int main() {
    char S1[] = "Paul", S2[8];
    S2=test(S1);
    strcpy(S1, S2);
    cout<<S2
    }
    


  • Ja versuch das mal ein zutippen und zu starten. Du wirst damit auch nicht zum Ziel kommen!


Anmelden zum Antworten