1 00:00:00,000 --> 00:00:03,080 >> SPEAKER 1: On käynyt ilmi voimme onnistuneesti vaihtaa arvoja kahdessa 2 00:00:03,080 --> 00:00:07,670 muuttujia viemällä ne toimiakseen eikä arvoa tai kopioida, mutta 3 00:00:07,670 --> 00:00:10,390 viittaamalla tai niiden osoitteet. 4 00:00:10,390 --> 00:00:12,740 Toisin sanoen, meidän täytyy hyödyntää jotain tunnetaan osoitin. 5 00:00:12,740 --> 00:00:15,580 Osoitin, todella, on vain osoite joitakin muuttuja. 6 00:00:15,580 --> 00:00:19,660 Joten jos tarjoamme toiminto nimeltään, vaikkapa vaihtaa osoitteen kanssa 7 00:00:19,660 --> 00:00:23,550 muuttuja ja osoite toisen muuttuja, swap olisi valtuudet 8 00:00:23,550 --> 00:00:26,090 mennä jokaiseen näistä osoitteista ja todella muuttaa 9 00:00:26,090 --> 00:00:27,360 arvot, jotka ovat siellä. 10 00:00:27,360 --> 00:00:28,890 >> Katsotaanpa tämän yhteydessä. 11 00:00:28,890 --> 00:00:31,360 Katsotaanpa reimplement swap seuraavasti. 12 00:00:31,360 --> 00:00:35,810 Ensimmäinen, nyt muuta ei olla int vaan olla osoitin int tai 13 00:00:35,810 --> 00:00:36,920 osoite int. 14 00:00:36,920 --> 00:00:40,820 Sitten Tehdään sama b, muuttuvat se int olla osoitin 15 00:00:40,820 --> 00:00:42,780 int tai osoite int. 16 00:00:42,780 --> 00:00:45,860 >> Sitten sisällä swap, katsotaanpa vielä julistaa TMP niin että meillä on 17 00:00:45,860 --> 00:00:47,810 väliaikainen paikka arvoa. 18 00:00:47,810 --> 00:00:52,430 Mutta arvo ei ole sinänsä, koska uudelleen, on nyt osoite 19 00:00:52,430 --> 00:00:53,270 Joidenkin int. 20 00:00:53,270 --> 00:00:57,320 Joten jos haluamme mennä kyseiseen osoitteeseen ja saada int kyseisessä osoitteessa, meillä on 21 00:00:57,320 --> 00:01:03,020 dereference tämä osoitin, myös tapa tähden operaattori, kirjoittaa tähti. 22 00:01:03,020 --> 00:01:05,470 >> Seuraava, en halua vaihtaa arvoa. 23 00:01:05,470 --> 00:01:08,770 Haluan muuttaa arvoon , pitäen mielessä, jälleen, 24 00:01:08,770 --> 00:01:10,350 että on osoite. 25 00:01:10,350 --> 00:01:14,050 Niin tehdä niin, en enää tarvitse sanoa tähti saa. 26 00:01:14,050 --> 00:01:18,360 Ja nyt haluan laittaa arvon se on b, ei-b: n arvo, joka 27 00:01:18,360 --> 00:01:19,720 on myös osoite. 28 00:01:19,720 --> 00:01:22,280 >> Joten sanon uudestaan, tähti b. 29 00:01:22,280 --> 00:01:26,690 Sitten minun viimeinen, minun täytyy korvata mikä on osoitteessa b kanssa 30 00:01:26,690 --> 00:01:28,970 mikä oli alkuperäinen sijainti. 31 00:01:28,970 --> 00:01:32,910 Voit tehdä, että minä teen tähti b saa tmp. 32 00:01:32,910 --> 00:01:34,820 >> Nyt lopussa päivä, tämä toiminto on edelleen vain 33 00:01:34,820 --> 00:01:35,950 kolme riviä koodia. 34 00:01:35,950 --> 00:01:39,860 Mutta koska se on manipuloimalla arvot Poiketen heidän osoitteensa eikä 35 00:01:39,860 --> 00:01:43,700 raaka-arvot, jotka siirrettiin osaksi toiminto, Väitän, että swap on nyt 36 00:01:43,700 --> 00:01:47,670 valtuudet muuttaa arvoja kulkeutuvat kautta niiden osoitteet. 37 00:01:47,670 --> 00:01:49,510 >> Mutta minun täytyy tehdä yksi muutos vielä. 38 00:01:49,510 --> 00:01:52,190 En voi enää kulkea x-ja y itse. 39 00:01:52,190 --> 00:01:55,030 Minun täytyy kulkea osoitteet x-ja y. 40 00:01:55,030 --> 00:01:58,160 Ja tehdä sitä, minä tarvitsen hieman eri merkintätapa ylös. 41 00:01:58,160 --> 00:02:02,510 Haluan vaihtaa x ja y johtamalla vuonna osoite x, ilmaistaan 42 00:02:02,510 --> 00:02:07,190 et-merkki x ja osoite y, ilmaistaan ​​ampersand y. 43 00:02:07,190 --> 00:02:10,570 >> Samoin ylös nyt tarvitsen muuttaa funktion prototyyppi 44 00:02:10,570 --> 00:02:14,980 vastaavat muutokset, jotka olen tehnyt, jotta on, jälleen, osoitin int. 45 00:02:14,980 --> 00:02:17,190 b on, jälleen, osoitin int. 46 00:02:17,190 --> 00:02:18,770 Ja nyt voin pelastaa minun arkistoida. 47 00:02:18,770 --> 00:02:20,680 Ja antaa kääntää ja ajaa se. 48 00:02:20,680 --> 00:02:25,330 >> Tee swap dot slash swap. 49 00:02:25,330 --> 00:02:29,660 Ja tällä kertaa, x ja y ovat todellakin nyt vaihtoivat siten, että niiden arvot eivät ole 50 00:02:29,660 --> 00:02:31,950 1 ja 2, mutta 2 ja 1. 51 00:02:31,950 --> 00:02:34,900