1 00:00:00,000 --> 00:00:03,080 >> Sprecher 1: Es stellt sich heraus, wir können die Werte in zwei erfolgreich tauschen 2 00:00:03,080 --> 00:00:07,670 Variablen, indem sie in eine funktionieren nicht nach Wert oder Kopie, sondern 3 00:00:07,670 --> 00:00:10,390 Referenz oder als deren Adressen. 4 00:00:10,390 --> 00:00:12,740 In anderen Worten, wir brauchen zu nutzen, etwas, als Zeiger bezeichnet. 5 00:00:12,740 --> 00:00:15,580 Ein Zeiger, wirklich, ist nur die Adresse einer Variablen. 6 00:00:15,580 --> 00:00:19,660 Und so, wenn wir eine Funktion mit dem Namen, sagen wir, tauschen mit der Adresse 7 00:00:19,660 --> 00:00:23,550 eine Variable, und die Adresse eines anderen Variable sollte Swap ermächtigt, 8 00:00:23,550 --> 00:00:26,090 gehen, um jede dieser Adressen und tatsächlich ändern 9 00:00:26,090 --> 00:00:27,360 Werte, die es gibt. 10 00:00:27,360 --> 00:00:28,890 >> Lassen Sie uns dies zu sehen im Kontext. 11 00:00:28,890 --> 00:00:31,360 Lassen Sie uns erneut implementieren Swap wie folgt. 12 00:00:31,360 --> 00:00:35,810 Zuerst ändern wir ein nicht vom Typ int sein sondern ein Zeiger auf eine int sein oder die 13 00:00:35,810 --> 00:00:36,920 Adresse einer int. 14 00:00:36,920 --> 00:00:40,820 Dann lassen Sie uns das gleiche für b, Umkleide es von einem int in einen Zeiger auf ein sein 15 00:00:40,820 --> 00:00:42,780 int oder die Adresse einer int. 16 00:00:42,780 --> 00:00:45,860 >> Dann innerhalb von Swap, lassen Sie uns noch tmp erklären, so dass wir ein 17 00:00:45,860 --> 00:00:47,810 temporären Ort für einen Wert. 18 00:00:47,810 --> 00:00:52,430 Aber ein Wert ist kein selbst, denn wieder, ist jetzt eine die Adresse 19 00:00:52,430 --> 00:00:53,270 von rund int. 20 00:00:53,270 --> 00:00:57,320 Also, wenn wir wollen an diese Adresse gehen und int bekommen an dieser Adresse, haben wir 21 00:00:57,320 --> 00:01:03,020 dereferenzieren dieser Zeiger auch durch der Stern-Operator, Schreib Sterne ein. 22 00:01:03,020 --> 00:01:05,470 >> Weiter weiß ich nicht ändern wollen der Wert von a. 23 00:01:05,470 --> 00:01:08,770 Ich, um den Wert zu ändern ein, wenn man bedenkt, wieder, 24 00:01:08,770 --> 00:01:10,350 daß ein eine Adresse. 25 00:01:10,350 --> 00:01:14,050 Also, dies zu tun, muss ich wieder zu sagen, bekommt einen Stern. 26 00:01:14,050 --> 00:01:18,360 Und jetzt möchte ich in den Wert setzen das ist bei b, nicht der Wert von b, die 27 00:01:18,360 --> 00:01:19,720 Auch ist eine Adresse. 28 00:01:19,720 --> 00:01:22,280 >> Also noch einmal sagen, dass ich, Stern b. 29 00:01:22,280 --> 00:01:26,690 Da ist in meinem letzten Zeile, muss ich überschreiben, was auf dem b-Adresse mit 30 00:01:26,690 --> 00:01:28,970 was auf eine ursprüngliche Lage. 31 00:01:28,970 --> 00:01:32,910 Um das zu tun, ich tue Sterne bekommt b tmp. 32 00:01:32,910 --> 00:01:34,820 >> Nun am Ende des Tages, diese Funktion ist immer noch nur 33 00:01:34,820 --> 00:01:35,950 drei Codezeilen. 34 00:01:35,950 --> 00:01:39,860 Aber weil es die Manipulation Werte durch ihre Adresse und nicht der 35 00:01:39,860 --> 00:01:43,700 Roh-Werte, die in die übergeben wurden Funktion, ich behaupten, dass Swap ist jetzt 36 00:01:43,700 --> 00:01:47,670 ermächtigt, die Werte zu ändern, dass werden über ihre Adressen weitergegeben. 37 00:01:47,670 --> 00:01:49,510 >> Aber ich muss noch eine Änderung zu machen. 38 00:01:49,510 --> 00:01:52,190 Ich kann nicht mehr passieren in x und y sich. 39 00:01:52,190 --> 00:01:55,030 Ich muss in den Adressen weitergeben x und y. 40 00:01:55,030 --> 00:01:58,160 Und um das zu tun, müssen einige leicht ich andere Schreibweise bis oben. 41 00:01:58,160 --> 00:02:02,510 Ich möchte x und y durch Einleiten tauschen die Adresse x, angezeigt durch 42 00:02:02,510 --> 00:02:07,190 Kaufmanns-x, und die Adresse des y, y von Et-Zeichen gekennzeichnet. 43 00:02:07,190 --> 00:02:10,570 >> Ebenso bis oben jetzt muss ich ändern Prototyp der Funktion zu 44 00:02:10,570 --> 00:02:14,980 entsprechen die Änderung, die ich gemacht habe, so dass a ist wiederum einen Zeiger auf ein Int. 45 00:02:14,980 --> 00:02:17,190 b ist wieder ein Zeiger auf eine int. 46 00:02:17,190 --> 00:02:18,770 Und jetzt kann ich meine Datei zu speichern. 47 00:02:18,770 --> 00:02:20,680 Und lassen Sie uns neu kompilieren und ausführen. 48 00:02:20,680 --> 00:02:25,330 >> Machen Swap dot Strich Swap. 49 00:02:25,330 --> 00:02:29,660 Und diese Zeit ist, x und y sind zwar jetzt vertauscht, so dass ihre Werte sind nicht 50 00:02:29,660 --> 00:02:31,950 1 und 2, 2 und 1, aber. 51 00:02:31,950 --> 00:02:34,900