Ü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