Übergaben



  • ich würde gerne einer funktion eine variable übergeben und diese soll den wert der varibalen ändern können:
    ich hab zb nen int x;
    x ist 10.
    ich rufe die fkt hallo(x) auf..
    in dieser wird der übergene wert auf 20 gesetzt
    und dann ist mein x in der rufenden funktion auch 20.

    wie könnte ich sowas machen? muss ich doch mit zeigern arbeiten oda?

    thx



  • Ja, da muss man der Funktion einen Zeiger auf int übergeben.



  • hmm nun gut aber wie genau?

    hallo(int *y){
    y=20;
    }
    
    main {
    
    int x =10;
    
    hallo(x);
    }
    

    so etwa? ich glaube so hat es auch mal geklappt, aber kann mir das jmd mal erklären.. ich blick da noch nich so ganz hinter



  • du musst den zeiger vor der benutzung in der funktion dereferenzieren

    hallo(int *y){
    *y=20;
    }
    
    main {
    
    int x =10;
    
    hallo(&x);
    }
    


  • Der Funktion mußt du eine Adresse übergeben - und in der Funktion den Zeiger dereferenzieren:

    void hallo(int *y){
    *y=20; // *y liefert das Objekt hinter dem Zeiger
    }
    
    int main() {
    
    int x =10;
    
    hallo(&x);// &x gibt dir einen Zeiger auf die Variable x
    }
    


  • ja super das funktioniert..
    aber ich versuche das gerade mit zeichenketten und das scheint nicht so zu funktionieren. Muss man da was besonderes beachten?



  • Zeichenketten sind char-Arrays - und wenn du sie nicht in ein lokales Array reinfüllst, darfst du sie nicht verändern (die Folge wäre ein SegFault):

    void test(char* data)
    {
      data[0]='W';
    }
    
    char testdata[] = "welt";
    test(testdata);//das Array wird automatisch als Zeiger interpretiert
    test("Hallo"); //problematisch - auch wenn der Compiler es schlucken sollte
    

Anmelden zum Antworten