1 00:00:00,000 --> 00:00:03,080 >> GARSIAKALBIS 1: Pasirodo, mes galime sėkmingai sukeisti vertybes dviejų 2 00:00:03,080 --> 00:00:07,670 kintamuosius rodiklius perduoti juos į veikti ne pagal vertę, arba kopija, bet 3 00:00:07,670 --> 00:00:10,390 nurodant, ar jų adresus. 4 00:00:10,390 --> 00:00:12,740 Kitaip tariant, mums reikia išnaudoti kažkas žinomas kaip žymeklį. 5 00:00:12,740 --> 00:00:15,580 Žymeklis, tikrai, yra tik adresas tikrą kintamąjį. 6 00:00:15,580 --> 00:00:19,660 Ir todėl, jei mes teikiame funkcija vadinama, tarkim, apsikeitimo su adresu 7 00:00:19,660 --> 00:00:23,550 kintamojo ir kito adresas kintamasis, mainai turėtų būti suteikti įgaliojimai 8 00:00:23,550 --> 00:00:26,090 eiti į kiekvieną iš šių adresų ir iš tiesų pakeisti 9 00:00:26,090 --> 00:00:27,360 vertybės, kurios yra ten. 10 00:00:27,360 --> 00:00:28,890 >> Pažiūrėkime šį kontekstą. 11 00:00:28,890 --> 00:00:31,360 Leiskite reimplement apsikeitimo taip. 12 00:00:31,360 --> 00:00:35,810 Pirma, galime pakeisti ne būti int tačiau turi būti rodyklė į int arba 13 00:00:35,810 --> 00:00:36,920 adresas int. 14 00:00:36,920 --> 00:00:40,820 Tada darykime patį b, keičiant ji iš int būti rodyklė į 15 00:00:40,820 --> 00:00:42,780 int ar iš int adresą. 16 00:00:42,780 --> 00:00:45,860 >> Tada viduje apsikeitimo, tegul dar paskelbti tmp, kad mes turime 17 00:00:45,860 --> 00:00:47,810 laikina vieta už vertę. 18 00:00:47,810 --> 00:00:52,430 Bet vertė yra ne pati, nes, vėl dabar adresas 19 00:00:52,430 --> 00:00:53,270 kai kurių int. 20 00:00:53,270 --> 00:00:57,320 Taigi, jei norime eiti tuo adresu ir gauti int tuo adresu, mes turime 21 00:00:57,320 --> 00:01:03,020 dereference šio rodyklė, taip pat taikant žvaigždučių operatorius raštu žvaigždute. 22 00:01:03,020 --> 00:01:05,470 >> Be to, aš nenoriu keisti iš vertė. 23 00:01:05,470 --> 00:01:08,770 Noriu pakeisti vertę , atsižvelgiant į tai, dar kartą, 24 00:01:08,770 --> 00:01:10,350 kad yra adresas. 25 00:01:10,350 --> 00:01:14,050 Taigi, norint tai padaryti, aš vėl reikia pasakyti žvaigždė pasireiškia. 26 00:01:14,050 --> 00:01:18,360 Ir dabar aš noriu įdėti į vertę tai ne b, o ne b vertei, kuri 27 00:01:18,360 --> 00:01:19,720 Taip pat yra adresas. 28 00:01:19,720 --> 00:01:22,280 >> Taigi dar kartą sakau, žvaigždės b. 29 00:01:22,280 --> 00:01:26,690 Tada mano paskutinės eilutės, man reikia perrašyti kas yra adresu b su 30 00:01:26,690 --> 00:01:28,970 kas buvo pradinę vietą. 31 00:01:28,970 --> 00:01:32,910 Norėdami tai padaryti, aš žvaigždė b gauna tmp. 32 00:01:32,910 --> 00:01:34,820 >> Dabar bent dienos pabaigoje, tai funkcija yra dar tik 33 00:01:34,820 --> 00:01:35,950 tris eilutes kodo. 34 00:01:35,950 --> 00:01:39,860 Bet kadangi tai manipuliuoti vertybes būdu savo adresą, o ne 35 00:01:39,860 --> 00:01:43,700 žaliavos vertybės, kurios buvo perduodamos į funkcija, galiu reikalauti, kad apsikeitimo dabar 36 00:01:43,700 --> 00:01:47,670 įgaliota pakeisti vertybes, yra priimtas per jų adresus. 37 00:01:47,670 --> 00:01:49,510 >> Bet man reikia padaryti vieną pakeitimą dar. 38 00:01:49,510 --> 00:01:52,190 Aš jau negaliu praeiti x ir y save. 39 00:01:52,190 --> 00:01:55,030 Man reikia praeiti adresais x ir y. 40 00:01:55,030 --> 00:01:58,160 Ir tai padaryti, man reikia šiek tiek kitoks žymėjimas iki viršaus. 41 00:01:58,160 --> 00:02:02,510 Noriu apsikeitimo x ir y, einančios per X adresą, žymimą 42 00:02:02,510 --> 00:02:07,190 Ženklas X, ir adresas y nurodyta ampersand y. 43 00:02:07,190 --> 00:02:10,570 >> Be to, iki viršaus dabar turiu pakeisti funkcijos prototipas 44 00:02:10,570 --> 00:02:14,980 suderinti pakeitimus, kad aš padaręs, kad , vėlgi, rodyklė į int. 45 00:02:14,980 --> 00:02:17,190 b yra, vėlgi, rodyklė į int. 46 00:02:17,190 --> 00:02:18,770 Ir dabar aš galiu išsaugoti savo failą. 47 00:02:18,770 --> 00:02:20,680 Ir tegul perkompiliuoti ir paleisti jį. 48 00:02:20,680 --> 00:02:25,330 >> Padaryti apsikeitimo taškas velniop apsikeitimo. 49 00:02:25,330 --> 00:02:29,660 Ir šį kartą, x ir y yra iš tiesų dabar pavertė tokia, kad jų vertės yra ne 50 00:02:29,660 --> 00:02:31,950 1 ir 2, o 2 ir 1. 51 00:02:31,950 --> 00:02:34,900