1 00:00:00,000 --> 00:00:03,080 >> SPEAKER 1: Selgub, saame edukalt vahetada väärtused kahe 2 00:00:03,080 --> 00:00:07,670 muutujad sooritades neid toimida mitte raha või kopeerida, kuid 3 00:00:07,670 --> 00:00:10,390 viidates või nende aadressid. 4 00:00:10,390 --> 00:00:12,740 Teisisõnu, peame me kasutama midagi tuntud osuti. 5 00:00:12,740 --> 00:00:15,580 Pointer, tõesti, on alles aadress mõned muutuja. 6 00:00:15,580 --> 00:00:19,660 Ja nii kui me pakume funktsioon nimega, ütleme, swap aadressiga 7 00:00:19,660 --> 00:00:23,550 muutuv ja aadress teise muutuja, swap tuleks anda volitused 8 00:00:23,550 --> 00:00:26,090 minge kõik need aadressid ja tegelikult muuta 9 00:00:26,090 --> 00:00:27,360 väärtused, mis on olemas. 10 00:00:27,360 --> 00:00:28,890 >> Vaatame seda konteksti. 11 00:00:28,890 --> 00:00:31,360 Olgem implementeerid swap järgmiselt. 12 00:00:31,360 --> 00:00:35,810 Esiteks muudame mitte olla int vaid olla pointer int või 13 00:00:35,810 --> 00:00:36,920 aadress int. 14 00:00:36,920 --> 00:00:40,820 Siis teeme sama b, muutes see int olevat kursorit 15 00:00:40,820 --> 00:00:42,780 int või aadress int. 16 00:00:42,780 --> 00:00:45,860 >> Siis sees swap, olgem ikka kuulutada tmp nii, et meil on 17 00:00:45,860 --> 00:00:47,810 ajutine koht väärtust. 18 00:00:47,810 --> 00:00:52,430 Aga väärtus ei ole iseenesest, sest jälle on nüüd aadress 19 00:00:52,430 --> 00:00:53,270 Mõnede int. 20 00:00:53,270 --> 00:00:57,320 Nii et kui me tahame minna sellele aadressile ja saada int sellele aadressile meil 21 00:00:57,320 --> 00:01:03,020 endid selle osuti, samuti teel star ettevõtja kirjalikult star. 22 00:01:03,020 --> 00:01:05,470 >> Järgmine, ma ei taha muuta väärtus. 23 00:01:05,470 --> 00:01:08,770 Tahan muuta väärtust , pidades silmas jällegi 24 00:01:08,770 --> 00:01:10,350 mis on aadress. 25 00:01:10,350 --> 00:01:14,050 Nii et seda ma veel vaja öelda täht muutub. 26 00:01:14,050 --> 00:01:18,360 Ja nüüd ma tahan panna raha see B, mitte väärtus b, mis 27 00:01:18,360 --> 00:01:19,720 Samuti on aadress. 28 00:01:19,720 --> 00:01:22,280 >> Nii et taas ma ütlen: täht b. 29 00:01:22,280 --> 00:01:26,690 Siis minu viimane rida, ma pean kirjutada, mis on aadressil b koos 30 00:01:26,690 --> 00:01:28,970 Mis oli algne asukoht. 31 00:01:28,970 --> 00:01:32,910 Selleks, et ma teen täht b saab tmp. 32 00:01:32,910 --> 00:01:34,820 >> Nüüd lõpuks päev, see funktsioon on ikka veel ainult 33 00:01:34,820 --> 00:01:35,950 kolm rida koodi. 34 00:01:35,950 --> 00:01:39,860 Aga kuna see on manipuleerimine väärtused teel oma aadressi ja mitte 35 00:01:39,860 --> 00:01:43,700 toores väärtused, mis olid vastu võetud, funktsioon, ma väita, et swap on nüüd 36 00:01:43,700 --> 00:01:47,670 volitus muuta väärtused on sooritanud kaudu nende aadressid. 37 00:01:47,670 --> 00:01:49,510 >> Aga mul on vaja teha üks muudatus veel. 38 00:01:49,510 --> 00:01:52,190 Ma ei saa enam läbima x ja y ise. 39 00:01:52,190 --> 00:01:55,030 Mul on vaja läbida aadressid x ja y. 40 00:01:55,030 --> 00:01:58,160 Ja seda, et ma vajan veidi eri märke üleval. 41 00:01:58,160 --> 00:02:02,510 Ma tahan, et vahetada x ja y läbides aadress x, tähistatud 42 00:02:02,510 --> 00:02:07,190 ampersand x ja aadress y, näitab ampersand y. 43 00:02:07,190 --> 00:02:10,570 >> Samamoodi üleval nüüd pean muuta funktsiooni prototüüp 44 00:02:10,570 --> 00:02:14,980 sobitada muutus, mis ma olen teinud, et on jällegi pointer int. 45 00:02:14,980 --> 00:02:17,190 b on taas viit int. 46 00:02:17,190 --> 00:02:18,770 Ja nüüd ma saan salvestada oma faili. 47 00:02:18,770 --> 00:02:20,680 Ja olgem kompileerida ja käivitada. 48 00:02:20,680 --> 00:02:25,330 >> Tee swap dot kaldkriipsuga swap. 49 00:02:25,330 --> 00:02:29,660 Ja seekord, x ja y on praegu tõepoolest vahetasin nii, et nende väärtused ei ole 50 00:02:29,660 --> 00:02:31,950 1 ja 2, kuid 2 ja 1. 51 00:02:31,950 --> 00:02:34,900