003
27.10.2005, 01:25 Uhr
Pablo
Supertux (Operator)
|
@dt2158: deine swap Funktion wird nicht funktioniert, weil sie genauso schief geht, wie diese hier:
C++: |
int swap(int a, int b) { int c = a; a = b; b = c; return 1; }
|
erkennst du da den Fehler?
Man übergibt Zeiger, weil dadruch, dass man die Adresse kennt, auf den Speicher zugreift und den Wert eine Variable ändern kann. Aber Zeiger sind auch Variablen, stink normale Variablen, die nichts anders tun, als einen Integer zu speicher, der die Adresse einer anderen Variable ist. Wenn du die Adresse in eine Funktion ändern willst, auf die ein Zeiger zeigt, musst du einen Zeiger auf den zeiger übergeben, also:
C++: |
int swap(char **string1, char **string2) { char *temp = *string1; *string1 = *string2; *string2 = temp; return 1; }
|
was du gemacht hast, ist aber auch falsch, denn du änderst nicht ein String sondern lediglich den ersten Buchstabe, wobei "char *temp = *string1;" und "*string2 = *temp;" (bei dir) Kässe sind.
Ich rate dir, lies ein Tutorial oder ein Buch und informiere dich, wie man mit Zeigern arbeitet. Ansonsten wirst du das nicht richtig kappieren. -- A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath, Gilthoniel, A! Elbereth! Dieser Post wurde am 27.10.2005 um 01:27 Uhr von Pablo editiert. |