1 00:00:00,000 --> 00:00:02,742 2 00:00:02,742 --> 00:00:05,680 >> SPEAKER 1: Hi everyone. 3 00:00:05,680 --> 00:00:07,530 Aiomme päästä alkuun. 4 00:00:07,530 --> 00:00:09,330 Uskon, että ihmiset ovat yhä käynnissä olla suodattamalla. 5 00:00:09,330 --> 00:00:12,840 Mutta kiinnostus aikaa, joten voimme tuoda teille täältä ajoissa, 6 00:00:12,840 --> 00:00:14,110 aiomme aloittaa. 7 00:00:14,110 --> 00:00:18,780 Joten tervetuloa CS50 Quiz 0 tarkastelu. 8 00:00:18,780 --> 00:00:23,020 Niille teistä, jotka eivät ole ymmärtäneet vielä, sinulla on kysymys keskiviikkona. 9 00:00:23,020 --> 00:00:25,700 Woo-hoo. 10 00:00:25,700 --> 00:00:29,780 >> Jos et ole aloittanut opiskelun vielä tai eivät ole ymmärtäneet, että on olemassa vielä, 11 00:00:29,780 --> 00:00:34,070 menneisyyden tietokilpailuja ja kaikki tiedot tietokilpailun ovat cs50.net/quizzes. 12 00:00:34,070 --> 00:00:38,090 Siellä on joitakin melko hyviä juttuja siellä, ohi tietokilpailuja viimeisestä 10 13 00:00:38,090 --> 00:00:43,760 vuotta sekä tietoa tästä tietokilpailu ja aiheet 14 00:00:43,760 --> 00:00:46,250 että katetaan. 15 00:00:46,250 --> 00:00:48,980 Joten pääset alkuun. 16 00:00:48,980 --> 00:00:54,240 >> Joten te ehkä muistatte, ensimmäinen päivänä luokan David oli nuo valaisimet. 17 00:00:54,240 --> 00:00:59,650 Niin olennaisesti, kaikesta, mikä menee on konepellin alle tietokone on 18 00:00:59,650 --> 00:01:00,860 tehdään binary. 19 00:01:00,860 --> 00:01:04,080 Binary tarkoittaa sitä mitä se kuulostaa kuten, 0: n ja 1: n. 20 00:01:04,080 --> 00:01:09,290 Sillä on kaksi arvoa, jotka voidaan esittää. 21 00:01:09,290 --> 00:01:14,675 >> Joten aivan kuten ensimmäisen päivän jakso kun David päällä valo 22 00:01:14,675 --> 00:01:21,990 polttimo edustaa päälle, tai 1, meidän tietokone ymmärtää binary kuin 0: n ja 23 00:01:21,990 --> 00:01:24,110 1: n, päälle tai pois päältä. 24 00:01:24,110 --> 00:01:25,360 Perusteet Binary. 25 00:01:25,360 --> 00:01:29,440 26 00:01:29,440 --> 00:01:32,470 Jokainen paikka on edustettuna alustassa kaksi. 27 00:01:32,470 --> 00:01:36,260 Niin lisäät 2 0 1 2 kokonaan ylös. 28 00:01:36,260 --> 00:01:41,970 >> Laskea mitä binary on desimaalin, vain seuraa tätä yhtälöä 29 00:01:41,970 --> 00:01:42,840 tyyppi juttu. 30 00:01:42,840 --> 00:01:49,510 Jos sinulla on 1 missään niistä paikoista, kerrot sen mitä 31 00:01:49,510 --> 00:01:53,820 perustavat se on, lisää se ylös, ja saat desimaalin. 32 00:01:53,820 --> 00:01:57,930 Joten tämä on, miten laskit 5 binary. 33 00:01:57,930 --> 00:02:01,400 Aivan kuten mitä olimme tekemässä Viimeinen kuva, tämä on miten olisit 34 00:02:01,400 --> 00:02:02,650 ovat 1: stä 5. 35 00:02:02,650 --> 00:02:05,320 36 00:02:05,320 --> 00:02:09,660 >> Samoin aivan kuten voit lisätä ja vähennä desimaali tai perustaa 10, tai 37 00:02:09,660 --> 00:02:13,040 oikeastaan ​​mitään pohja, päälle voi lisätä ja vähennä binary. 38 00:02:13,040 --> 00:02:18,400 Mitä voit odottaa, kun lisätä kaksi ylös, jos se vastaa paremmin 39 00:02:18,400 --> 00:02:24,220 kuin 1, teillä 1, jotta se 0, ja tehdä lisäksi, että tapa, vain 40 00:02:24,220 --> 00:02:29,910 kuten arvata saattaa säännöllisesti desimaalin tai muuta emästä. 41 00:02:29,910 --> 00:02:30,970 Cool. 42 00:02:30,970 --> 00:02:35,140 >> Niin kuin aiemmin sanoin, kaiken, menee konepellin alle meidän tietokone 43 00:02:35,140 --> 00:02:37,560 tehdään 0: n ja 1: n, tai binary. 44 00:02:37,560 --> 00:02:43,470 Miten siis ilmaista esimerkiksi kirjaimia tai numeroita tai merkkejä? 45 00:02:43,470 --> 00:02:45,560 Ja vastaus tähän on ASCII. 46 00:02:45,560 --> 00:02:49,380 >> ASCII on kuvaus merkkien välissä että me yleensä nähdä 47 00:02:49,380 --> 00:02:53,360 Englanti kieli kuten n, B: n, C: n, alaviiva, viivoja, ja 48 00:02:53,360 --> 00:02:54,910 mitään sellaista. 49 00:02:54,910 --> 00:02:57,260 Ja kartat, että ASCII-arvo. 50 00:02:57,260 --> 00:03:03,080 ASCII-arvo on vain numero, joka voidaan ymmärtää tietokoneen. 51 00:03:03,080 --> 00:03:07,430 Ja aivan kuten voit tehdä lisäksi ja vähennyslaskua numeroita, voit tehdä 52 00:03:07,430 --> 00:03:10,890 ne ASCII-arvoina. 53 00:03:10,890 --> 00:03:14,050 >> Joten tässä esimerkissä, mitä tulee tämä tulostaa? 54 00:03:14,050 --> 00:03:26,790 55 00:03:26,790 --> 00:03:35,480 Joo, niin juuri tilaa B tila C tilaa D. Missä minun hiiri mennä? 56 00:03:35,480 --> 00:03:39,200 57 00:03:39,200 --> 00:03:43,380 Huomaa voit määrittää int 65. 58 00:03:43,380 --> 00:03:47,080 Ja kun tulostat että käyttämällä prosenttia C, se tulee tulkita, että 59 00:03:47,080 --> 00:03:49,330 luonne ja tulostaa A. 60 00:03:49,330 --> 00:03:52,800 >> Samoin voit ilmoittaa sen merkkiä. 61 00:03:52,800 --> 00:03:56,860 Ja kun tulostaa sen käyttäen prosenttia C, se tulee tulkita, että 62 00:03:56,860 --> 00:04:05,240 prosenttia D. Ja aivan kuten voit lisätä numeron, voit lisätä merkkejä ovat 63 00:04:05,240 --> 00:04:06,878 ASCII-arvot, tässä tapauksessa. 64 00:04:06,878 --> 00:04:11,370 65 00:04:11,370 --> 00:04:16,130 >> Niin vähän osoitin kaikille. 66 00:04:16,130 --> 00:04:19,610 5, kuten merkkijono, ei todella equal 5. 67 00:04:19,610 --> 00:04:26,610 Joten miten me saatamme muuntaa string 5 kokonaisluku 5? 68 00:04:26,610 --> 00:04:28,930 Onko ideoita? 69 00:04:28,930 --> 00:04:31,630 Joo. 70 00:04:31,630 --> 00:04:36,720 >> Joten jos meillä on 5 merkkijono, voimme vähentää 0. 71 00:04:36,720 --> 00:04:37,820 Ja että annan meille 5. 72 00:04:37,820 --> 00:04:41,670 Ja samoin, jos meillä on 5 kuin kokonaisluku, lisätä, että merkkijono 0. 73 00:04:41,670 --> 00:04:43,112 Ja joka antaa meille merkkijono 5. 74 00:04:43,112 --> 00:04:46,350 75 00:04:46,350 --> 00:04:48,350 Cool. 76 00:04:48,350 --> 00:04:52,940 >> Nyt muistaa takaisin luennoimaan sellainen, jossa puhuimme algoritmeja. 77 00:04:52,940 --> 00:04:57,260 Joten miten haluamme oikeastaan ​​tietokoneen tehdä mielenkiintoisia asioita? 78 00:04:57,260 --> 00:05:00,460 Tiedäthän, vain lisäämällä ja vähentämällä numerot ja tulostus asioita ei ole 79 00:05:00,460 --> 00:05:01,730 että jännittävä. 80 00:05:01,730 --> 00:05:04,620 Yleensä haluamme tietokone suorittaa jonkinlainen algoritmi. 81 00:05:04,620 --> 00:05:07,820 Jotain hieman monimutkaisempi kuin vain yksinkertaisia ​​laskutoimituksia. 82 00:05:07,820 --> 00:05:11,930 >> Algoritmi on vain askel askeleelta sarja annettu ohjeet miten tehdä 83 00:05:11,930 --> 00:05:14,640 Tiettyjen task-- 84 00:05:14,640 --> 00:05:15,660 aivan kuten resepti. 85 00:05:15,660 --> 00:05:19,990 Muistatte ehkä ensimmäisenä päivänä luokka, jossa Daavid oli meille luottaa huone 86 00:05:19,990 --> 00:05:22,550 ihmisiä ja kuinka moni olivat huoneessa. 87 00:05:22,550 --> 00:05:24,480 Saatat käyttää laskenta yksi kerrallaan. 88 00:05:24,480 --> 00:05:25,860 1, 2, 3, 4. 89 00:05:25,860 --> 00:05:28,010 Siinä tapauksessa, lineaarinen aika-algoritmi. 90 00:05:28,010 --> 00:05:31,710 >> Mutta David käyttöön algoritmi voit laskea henkilöä huoneessa 91 00:05:31,710 --> 00:05:37,340 jossa jokainen nousee ylös, sanot numeroa toiselle henkilölle, lisätä, 92 00:05:37,340 --> 00:05:39,200 numero ylös, ja yksi henkilö istuu alas. 93 00:05:39,200 --> 00:05:40,410 Ja Voitko toistaa. 94 00:05:40,410 --> 00:05:42,910 Se on yhdenlaista algoritmin. 95 00:05:42,910 --> 00:05:47,520 Voimme analysoida, miten tehokas algoritmi perustuu se ajoaika. 96 00:05:47,520 --> 00:05:49,680 Mutta me puhumme hieman lisää myöhemmin. 97 00:05:49,680 --> 00:05:52,740 98 00:05:52,740 --> 00:05:57,090 >> Joten kaikki algoritmit voi myös kirjoitetaan pseudokoodilla. 99 00:05:57,090 --> 00:06:01,120 Pseudokoodina on vain Englanti kuten syntaksin käytetään edustamaan 100 00:06:01,120 --> 00:06:02,420 ohjelmointikieli. 101 00:06:02,420 --> 00:06:06,070 Esimerkiksi, jos haluamme kysyä käyttäjältä arvata suosikkini numero, me 102 00:06:06,070 --> 00:06:08,390 voi olla pseudokoodilla sellaisenaan. 103 00:06:08,390 --> 00:06:09,850 >> Saada käyttäjät arvata. 104 00:06:09,850 --> 00:06:13,570 Jos arvaus on oikea, kerro heille he ovat oikeassa, muu kertoa heille 105 00:06:13,570 --> 00:06:15,560 ne eivät ole oikeita. 106 00:06:15,560 --> 00:06:22,530 Ja pseudokoodina on tapa helposti mikä idea tai algoritmi. 107 00:06:22,530 --> 00:06:26,910 Joten nyt kannattaa todella kirjoittaa Tämän kielellä, että tietokone 108 00:06:26,910 --> 00:06:27,980 ehkä ymmärrystä. 109 00:06:27,980 --> 00:06:35,660 Jotta voisimme kirjoittaa meidän pseudokoodina ja tulkita osaksi lähdekoodia. 110 00:06:35,660 --> 00:06:41,320 >> Toistaiseksi lähdekoodi on noudatettava tiettyä syntaksia 111 00:06:41,320 --> 00:06:42,490 ohjelmointikieli. 112 00:06:42,490 --> 00:06:45,430 Ja toistaiseksi on CS50, olemme käyttänyt enimmäkseen c. 113 00:06:45,430 --> 00:06:48,320 Joten tämä voisi olla lähdekoodia c. 114 00:06:48,320 --> 00:06:51,440 Myöhemmin tietysti te yö tulla kosketuksiin muiden ohjelmointi 115 00:06:51,440 --> 00:06:52,480 kieliä kuten PHP. 116 00:06:52,480 --> 00:06:57,540 Tai jos edes ottaa muihin luokkiin, sinua voisi tehdä Java, Python tai jopa OCML. 117 00:06:57,540 --> 00:07:01,570 Mutta meidän C-ohjelma kielen, tämä on miten voisimme kirjoittaa lähdekoodi 118 00:07:01,570 --> 00:07:04,760 pseudokoodia algoritmi, joka Olen juuri kuvattu aikaisemmin. 119 00:07:04,760 --> 00:07:08,630 120 00:07:08,630 --> 00:07:11,430 >> Joten miten tietokone oikeastaan ymmärtää, että? 121 00:07:11,430 --> 00:07:14,490 Kuten aiemmin sanoin, se vain todella ymmärtää nollia ja ykkösiä. 122 00:07:14,490 --> 00:07:17,880 Joten miten se saa lähteestä koodin jotain, joka voi olla 123 00:07:17,880 --> 00:07:18,960 ymmärretty? 124 00:07:18,960 --> 00:07:22,920 No, meillä on jotain kutsutaan kääntäjä. 125 00:07:22,920 --> 00:07:28,450 >> Jos muistatte takaisin irti psets, sinulla oli jonkinlainen ohjelma 126 00:07:28,450 --> 00:07:30,370 kirjoitettu piste c tiedosto. 127 00:07:30,370 --> 00:07:32,550 Ja sitten kirjoitetaan tehdä. 128 00:07:32,550 --> 00:07:35,970 Joten mitä tehdä tekee? 129 00:07:35,970 --> 00:07:39,970 >> Voit kirjoittaa make kokoat ohjelma, koska someone-- 130 00:07:39,970 --> 00:07:42,730 kuka kirjoitti oman p set; luultavasti David-- 131 00:07:42,730 --> 00:07:44,190 luotu tehdä tiedosto. 132 00:07:44,190 --> 00:07:51,320 Ja joka kertoo tekevät tietää ajaa kääntäjä, nimeltään kalahtaa, että tahto 133 00:07:51,320 --> 00:07:55,560 sitten kääntää lähdekoodista vastustaa koodin, joka on nollia ja ykkösiä 134 00:07:55,560 --> 00:07:57,720 että tietokone ymmärtää. 135 00:07:57,720 --> 00:08:01,610 Mutta vähän myöhemmin, menemme enemmän syvyyttä noin kerääjiä. 136 00:08:01,610 --> 00:08:05,640 137 00:08:05,640 --> 00:08:10,800 >> Joten muistaa PSET 0, where-- kyllä, sinulla on kysymys? 138 00:08:10,800 --> 00:08:11,620 >> Yleisö: [kuulumaton]? 139 00:08:11,620 --> 00:08:12,490 >> SPEAKER 1: Kyllä. 140 00:08:12,490 --> 00:08:14,960 Luulen, että he todella pitäisi olla suora. 141 00:08:14,960 --> 00:08:15,120 Joo. 142 00:08:15,120 --> 00:08:16,572 >> Yleisö: Onko se kuin [kuulumaton]? 143 00:08:16,572 --> 00:08:19,476 144 00:08:19,476 --> 00:08:20,830 >> SPEAKER 1: Ei ole. 145 00:08:20,830 --> 00:08:25,810 Ovat cs50.net/quizzes. 146 00:08:25,810 --> 00:08:32,900 >> Yleisö: Slash tietokilpailuja, slash 2013, slash 0, ja klikkaa läpi 147 00:08:32,900 --> 00:08:35,956 tietokilpailuja 2013 ja tietokilpailu 0, Arvostele jakso dioja. 148 00:08:35,956 --> 00:08:40,380 >> SPEAKER 1: Joo, joten jos kaverit haluavat vedä se ylös ja katsoa sitä oman 149 00:08:40,380 --> 00:08:42,740 oma tietokone, joka sekin sopii. 150 00:08:42,740 --> 00:08:43,130 Sano se uudestaan. 151 00:08:43,130 --> 00:08:44,546 >> Yleisö: [kuulumaton]. 152 00:08:44,546 --> 00:08:48,780 >> SPEAKER 1: Joo, [kuulumaton] on dummy-muuttuja. 153 00:08:48,780 --> 00:08:49,644 Voi, kyllä? 154 00:08:49,644 --> 00:08:51,372 >> Yleisö: [kuulumaton]? 155 00:08:51,372 --> 00:08:54,300 >> SPEAKER 1: Ei, lakot eivät ole tentti. 156 00:08:54,300 --> 00:08:55,950 Anteeksi, kysymyksensä oli, oli iskuja tentti. 157 00:08:55,950 --> 00:08:59,530 Ja se ei ole. 158 00:08:59,530 --> 00:09:05,780 Niin pset 0, te pitäisi olla kaikki toteuttaa jotain käyttäen tyhjästä. 159 00:09:05,780 --> 00:09:13,100 Ja olemme oppineet joitakin perusasioita ohjelmointi rakennuspalikoita käyttäen tyhjästä. 160 00:09:13,100 --> 00:09:15,590 >> Joten katsomaan joitakin Näiden rakennuspalikoita 161 00:09:15,590 --> 00:09:18,170 jotka muodostavat ohjelman. 162 00:09:18,170 --> 00:09:20,570 Ensimmäinen on Boolen lauseke. 163 00:09:20,570 --> 00:09:24,540 Boolen operaattoreilla ovat ykkösiä ja 0: n tai jotain, joka on 164 00:09:24,540 --> 00:09:25,700 kaksi mahdollista arvoa. 165 00:09:25,700 --> 00:09:30,320 Tässä tapauksessa, totta vai tarua, päälle tai pois, ja kyllä ​​tai ei. 166 00:09:30,320 --> 00:09:35,390 Eräs esimerkki on yksinkertainen, hyvin yksinkertainen, ohjelma, joka käyttää Boolen 167 00:09:35,390 --> 00:09:39,140 ilme täällä. 168 00:09:39,140 --> 00:09:43,220 >> Joten jotta Boolen lausekkeita olla hyödyllistä, on Boolen operaattoreita. 169 00:09:43,220 --> 00:09:48,920 Nämä ovat operaattorit, joita voidaan käyttää vertailla tiettyjä arvoja. 170 00:09:48,920 --> 00:09:52,820 Joten meillä on ja tai ei vastaa, vähemmän kuin tai yhtä suuri, suurempi tai 171 00:09:52,820 --> 00:09:55,130 yhtä suuri, ja vähemmän kuin tai suurempi. 172 00:09:55,130 --> 00:09:59,060 Mutta nämä operaattorit eivät ole kovin käyttökelpoisia ellemme ne voidaan yhdistää 173 00:09:59,060 --> 00:10:00,320 olosuhteissa. 174 00:10:00,320 --> 00:10:04,370 >> Joten te ehkä muistaa tyhjästä ja teidän s asettaa, että me 175 00:10:04,370 --> 00:10:05,400 oli olosuhteet. 176 00:10:05,400 --> 00:10:09,710 Niitä ovat ennen kaikkea, kuten haarukat logiikka oman ohjelman, joka 177 00:10:09,710 --> 00:10:12,670 suorittaa riippuen siitä, onko ehto täyttyy. 178 00:10:12,670 --> 00:10:18,150 Joten yksi ehdoista, että meillä oli käyttää monta kertaa tällä kurssilla on 179 00:10:18,150 --> 00:10:21,470 jos muu, jos ja muu ehtoja. 180 00:10:21,470 --> 00:10:24,060 >> Tässä on esimerkki siitä, miten voit käyttää sitä. 181 00:10:24,060 --> 00:10:28,430 Tietääkö kukaan eroa vain käyttää jos lausunnot kaikki 182 00:10:28,430 --> 00:10:32,530 alas säkeet, jos muuta, jos, ja muuten yhdistää? 183 00:10:32,530 --> 00:10:33,013 Kyllä? 184 00:10:33,013 --> 00:10:34,263 >> Yleisö: [kuulumaton]. 185 00:10:34,263 --> 00:10:40,741 186 00:10:40,741 --> 00:10:42,160 >> SPEAKER 1: Aivan. 187 00:10:42,160 --> 00:10:50,210 Joten jos minulla olisi, jos kaikki alas tämän Muuten, vaikka tämä ehto palaa 188 00:10:50,210 --> 00:10:52,800 totta, se jatkuu edelleen testaus kahden seuraavan. 189 00:10:52,800 --> 00:11:00,120 Ottaa huomioon, muuta-jos muu lausunto, jos yksi palauttaa true, 190 00:11:00,120 --> 00:11:02,640 toiset ei testattu. 191 00:11:02,640 --> 00:11:05,955 Kysyttävää siitä? 192 00:11:05,955 --> 00:11:06,890 Cool. 193 00:11:06,890 --> 00:11:12,240 >> Joten voit käyttää if-else ja muuta lausunto, jos tiedät, että se voi vain 194 00:11:12,240 --> 00:11:14,470 olla yksi näistä tapauksista. 195 00:11:14,470 --> 00:11:21,550 Tiedämme siis, jos x on pienempi kuin 0, se on varmasti tule olemaan 196 00:11:21,550 --> 00:11:22,890 suurempi kuin 0. 197 00:11:22,890 --> 00:11:26,940 198 00:11:26,940 --> 00:11:31,480 >> Seuraavaksi toinen rakennuspalikka että olemme oppineet ovat silmukoita. 199 00:11:31,480 --> 00:11:33,310 Meillä on kolmenlaisia ​​silmukoita. 200 00:11:33,310 --> 00:11:35,830 Silmukoita, kun silmukoita, ja tehdä samalla silmukoita. 201 00:11:35,830 --> 00:11:38,730 Ja yleensä, kun istut alas kirjoittaa jotain, sinun on päätettävä 202 00:11:38,730 --> 00:11:40,060 mikä kolmesta haluat käyttää. 203 00:11:40,060 --> 00:11:41,900 Miten siis päättää kumpi? 204 00:11:41,900 --> 00:11:44,920 205 00:11:44,920 --> 00:11:48,790 >> Me yleensä käytä silmukka jos tiedämme kuinka monta kertaa haluamme kerrata 206 00:11:48,790 --> 00:11:53,650 kautta jotain tai kuinka monta kertaa haluamme tehtävän suorittamiseen. 207 00:11:53,650 --> 00:11:58,830 Käytämme kun silmukoita jos tarvitsemme ehto on tosi pitää käynnissä. 208 00:11:58,830 --> 00:12:03,730 Ja käytämme tehdä, kun hyvin samankaltainen aikaa, mutta haluamme koodi ajaa 209 00:12:03,730 --> 00:12:04,880 ainakin yhden kerran. 210 00:12:04,880 --> 00:12:09,410 >> Niin taas, mitä on teette aina ajaa ainakin yhden kerran. 211 00:12:09,410 --> 00:12:13,120 Ottaa huomioon, kun se ei välttämättä toimi ollenkaan, jos 212 00:12:13,120 --> 00:12:15,490 ehto ei täyty. 213 00:12:15,490 --> 00:12:16,740 Kysyttävää tähän? 214 00:12:16,740 --> 00:12:20,480 215 00:12:20,480 --> 00:12:22,860 >> Joten rakenne silmukan. 216 00:12:22,860 --> 00:12:23,620 Olette kaikki nähneet tämän. 217 00:12:23,620 --> 00:12:25,320 Voit alustaa sen. 218 00:12:25,320 --> 00:12:26,600 Sinulla on jonkinlainen kunnossa. 219 00:12:26,600 --> 00:12:32,340 Niin, esimerkiksi voisimme alustaa kuten i vastaa 0. 220 00:12:32,340 --> 00:12:34,040 i on pienempi kuin 10. 221 00:12:34,040 --> 00:12:35,442 Ja i ++. 222 00:12:35,442 --> 00:12:39,010 Hyvin yksinkertainen, että olemme tehneet. 223 00:12:39,010 --> 00:12:42,210 >> Jonkin aikaa silmukka, vastaavasti olet olla jonkinlainen alustuksen, 224 00:12:42,210 --> 00:12:44,980 jonkinlainen kunnossa, ja jonkinlainen päivitys. 225 00:12:44,980 --> 00:12:51,990 Jotta voimme toteuttaa meidän silmukka myös koska while-silmukka käyttää tätä. 226 00:12:51,990 --> 00:12:56,000 Ja samalla tavoin do while-silmukka, meillä saattaa olla joitakin alustuksen, 227 00:12:56,000 --> 00:12:58,640 suorittaa jotain, päivittää sitä, ja sitten tarkistaa kunto. 228 00:12:58,640 --> 00:13:03,500 229 00:13:03,500 --> 00:13:05,140 >> Niin nyt toimii. 230 00:13:05,140 --> 00:13:06,460 Laitamme kaiken yhteen. 231 00:13:06,460 --> 00:13:10,140 Meidän kannattaa kirjoittaa joitakin Tällainen toiminto. 232 00:13:10,140 --> 00:13:12,790 Yhteinen toiminto, saatat nähneet jo on tärkein. 233 00:13:12,790 --> 00:13:13,770 Tärkein on funktio. 234 00:13:13,770 --> 00:13:16,160 Se on palautuva, int. 235 00:13:16,160 --> 00:13:18,470 Se on funktion nimi, main. 236 00:13:18,470 --> 00:13:20,810 Ja se on argumentteja, argc ja argv. 237 00:13:20,810 --> 00:13:24,040 Joten tärkein on vain tehtävä. 238 00:13:24,040 --> 00:13:27,230 >> Muut toiminnot olet saattanut käyttää, printf-- Printf on function-- 239 00:13:27,230 --> 00:13:29,330 GetInt, toupper. 240 00:13:29,330 --> 00:13:32,010 Mutta nämä tapahtua olleen toteutettu meille 241 00:13:32,010 --> 00:13:33,270 jonkinlainen kirjasto. 242 00:13:33,270 --> 00:13:37,400 Jos te muistaa myös Tämän CS50.h kirjasto tai 243 00:13:37,400 --> 00:13:38,510 vakio-I / O-kirjasto. 244 00:13:38,510 --> 00:13:39,200 Kyllä, kysymys? 245 00:13:39,200 --> 00:13:41,610 >> Yleisö: Onko tärkein vain luonnostaan ​​c? 246 00:13:41,610 --> 00:13:44,740 Onko se vain sellainen [äänetön]? 247 00:13:44,740 --> 00:13:47,370 >> SPEAKER 1: kysymys on jos tärkein on luonnostaan ​​c. 248 00:13:47,370 --> 00:13:51,460 Ja kyllä, kaikki toiminnot on tärkein ominaisuus. 249 00:13:51,460 --> 00:13:55,290 Se on tavallaan Jotta tietokone tietää, mistä aloittaa 250 00:13:55,290 --> 00:13:55,993 käynnissä koodi. 251 00:13:55,993 --> 00:13:58,108 >> Yleisö: joten et [kuulumaton]? 252 00:13:58,108 --> 00:13:59,480 >> SPEAKER 1: Ei 253 00:13:59,480 --> 00:14:00,760 Muita kysymyksiä? 254 00:14:00,760 --> 00:14:03,430 255 00:14:03,430 --> 00:14:04,770 Cool. 256 00:14:04,770 --> 00:14:08,050 Joten aivan kuten voit käyttää toimintoa joka on kirjoitettu sinulle, voit myös 257 00:14:08,050 --> 00:14:10,380 kirjoita funktio. 258 00:14:10,380 --> 00:14:17,050 Tämä on toiminto, että joku saattaisi ovat kirjoittaneet laskea määrän 259 00:14:17,050 --> 00:14:18,395 ja q, esimerkiksi. 260 00:14:18,395 --> 00:14:21,300 261 00:14:21,300 --> 00:14:29,500 Siellä on palautuva täällä, tässä tapauksessa int, meidän funktion nimi q ja meidän 262 00:14:29,500 --> 00:14:31,360 Luettelo parametrit. 263 00:14:31,360 --> 00:14:34,550 >> Ja huomaa, että sinun täytyy kirjoittaa dataa tyyppinen parametri, jota haluat 264 00:14:34,550 --> 00:14:38,660 käyttää tai muuten toiminto ei tietää, millaisia 265 00:14:38,660 --> 00:14:41,650 parametri minun pitäisi hyväksyä. 266 00:14:41,650 --> 00:14:48,110 Eli tässä tapauksessa haluamme kokonaisluku kuin meidän tulo. 267 00:14:48,110 --> 00:14:50,390 Miksi ehkä haluamme käyttää toimintoja? 268 00:14:50,390 --> 00:14:52,800 >> Ensinnäkin suuri organisaatio. 269 00:14:52,800 --> 00:14:56,350 He auttavat hajottaa koodi enemmän järjestäytyneen paloina ja tehdä 270 00:14:56,350 --> 00:14:57,960 se on helpompi lukea. 271 00:14:57,960 --> 00:14:59,760 Yksinkertaistaminen. 272 00:14:59,760 --> 00:15:01,740 Tämä on hyvä suunnittelu. 273 00:15:01,740 --> 00:15:04,570 Kun luet koodinpätkä ja päätehtävä on todella, 274 00:15:04,570 --> 00:15:07,750 todella pitkä, se saattaa olla vaikeampi syy mitä on tekeillä. 275 00:15:07,750 --> 00:15:11,710 Joten jos murtaa se alas toiminnot, se voi olla helpompi lukea. 276 00:15:11,710 --> 00:15:12,750 Ja uudelleen-kyky. 277 00:15:12,750 --> 00:15:16,940 Jos sinulla on koodinpätkän, joka syötetään soittanut tai käyttää useita kertoja, 278 00:15:16,940 --> 00:15:20,690 sijaan kirjoittamasta että koodin 10 kertaa teidän päätehtävä, saatat 279 00:15:20,690 --> 00:15:21,440 haluat käyttää sitä uudelleen. 280 00:15:21,440 --> 00:15:25,740 Ja sitten aina tarvitse käyttää, että koodinpätkä, soita toiminto. 281 00:15:25,740 --> 00:15:30,550 282 00:15:30,550 --> 00:15:35,380 >> Joten nyt jos muistamme takaisin tyhjästä, Olemme myös puhuneet muutaman käsitteitä, 283 00:15:35,380 --> 00:15:37,680 joista yksi on ketjuttaminen. 284 00:15:37,680 --> 00:15:41,120 Lanka on käsite useiden sekvenssit koodi 285 00:15:41,120 --> 00:15:43,040 täytäntöönpanosta samaan aikaan. 286 00:15:43,040 --> 00:15:47,490 Niin muistelen päivästä jossa Daavid oli te laskea pois lukumäärä 287 00:15:47,490 --> 00:15:48,440 henkilöä huoneessa. 288 00:15:48,440 --> 00:15:50,550 >> Pohjimmiltaan, mitä oli tekeillä siitä on kaikki te olitte 289 00:15:50,550 --> 00:15:52,370 käynnissä erilliset kierteet. 290 00:15:52,370 --> 00:15:55,540 Ja ne langat olivat tulossa yhdessä saada jonkinlainen vastaus. 291 00:15:55,540 --> 00:15:58,890 Samoin Scratch, kun olet useita sprite, saatat 292 00:15:58,890 --> 00:16:01,070 on kissa ja koira. 293 00:16:01,070 --> 00:16:08,770 Ja he olisivat samanaikaisesti ylläpitävät omia skriptejä. 294 00:16:08,770 --> 00:16:10,020 Tämä on esimerkki ketjuttaminen. 295 00:16:10,020 --> 00:16:12,860 296 00:16:12,860 --> 00:16:18,000 >> Ja muut käsitteet, jotka oli käyttöön naarmu oli tapahtumia. 297 00:16:18,000 --> 00:16:22,550 Ja tapahtumat ovat, kun useita osia koodi kommunikoida toistensa kanssa. 298 00:16:22,550 --> 00:16:26,840 Scratch, tämä oli kun käytit broadcast ohjaus ja When I 299 00:16:26,840 --> 00:16:29,500 Saavat lohkot. 300 00:16:29,500 --> 00:16:35,170 >> Ja myös vuonna Harjoitus 4, näimme hieman tapahtumista samoin. 301 00:16:35,170 --> 00:16:38,250 Te saattanut käyttää Gevent kirjasto. 302 00:16:38,250 --> 00:16:42,450 Ja oli toiminto waitForClick jossa odotit 303 00:16:42,450 --> 00:16:44,300 käyttäjä napsauttaa. 304 00:16:44,300 --> 00:16:47,870 Ja click, tässä tapauksessa olisi tapahtuma ja odota click on sinun 305 00:16:47,870 --> 00:16:49,120 tapahtuman käsittelijät. 306 00:16:49,120 --> 00:16:53,690 307 00:16:53,690 --> 00:16:58,630 >> Ja myös koko näkyä psets ja työstää psets, voit 308 00:16:58,630 --> 00:17:01,920 saattanut joutua kosketuksiin jotkut näistä komennoista. 309 00:17:01,920 --> 00:17:05,579 Tämä on mitä kirjoitit omalle pääteikkunassa tai mitä tahansa ikkuna 310 00:17:05,579 --> 00:17:12,119 joka näkyy teidän g Muokkauksesi, olennaisesti, navigoida tietokoneen. 311 00:17:12,119 --> 00:17:19,440 >> Joten esimerkiksi LS luetellaan hakemiston sisällön. 312 00:17:19,440 --> 00:17:22,510 Tee hakemisto luo uuden kansion. 313 00:17:22,510 --> 00:17:24,819 CD, muutos hakemistoon. 314 00:17:24,819 --> 00:17:28,400 RM, poistaa, poistaa tiedoston tai jonkin hakemistoon. 315 00:17:28,400 --> 00:17:31,050 Ja poista hakemisto poistaa hakemistosta. 316 00:17:31,050 --> 00:17:32,300 >> Yleisö: [kuulumaton]? 317 00:17:32,300 --> 00:17:36,978 318 00:17:36,978 --> 00:17:38,370 >> SPEAKER 1: Joo, varmasti. 319 00:17:38,370 --> 00:17:42,530 320 00:17:42,530 --> 00:17:46,040 Sorry, kysymys oli, jos Ehdottaisin laskemisesta tämän 321 00:17:46,040 --> 00:17:48,840 on lunttilappua. 322 00:17:48,840 --> 00:17:49,440 Se voisi auttaa. 323 00:17:49,440 --> 00:17:51,490 Jos sinulla on tilaa, voit laittaa sen päälle. 324 00:17:51,490 --> 00:17:56,170 Se on vain yleensä riittävän hyvä muistaa, koska kun käytät sitä 325 00:17:56,170 --> 00:17:59,060 saatat haluta vain on se ulkoa. 326 00:17:59,060 --> 00:18:02,750 Että saat tehdä elämästäsi paljon helpompaa. 327 00:18:02,750 --> 00:18:04,000 Teinkö kysymykseesi? 328 00:18:04,000 --> 00:18:10,528 329 00:18:10,528 --> 00:18:14,290 >> Joten nyt puhuimme hieman lyhyesti kirjastot. 330 00:18:14,290 --> 00:18:18,570 Mutta kaksi niistä tärkeimmät, että olemme olleet käyttäen tähän mennessä Kurssin 331 00:18:18,570 --> 00:18:20,860 vakio-I / O ja CS50. 332 00:18:20,860 --> 00:18:25,410 Millaisia ​​asioita ovat mukana vuonna vakio I / O-kirjasto? 333 00:18:25,410 --> 00:18:28,410 >> Joo, toistaiseksi olemme käyttäneet printf. 334 00:18:28,410 --> 00:18:31,150 Vuonna CS50, olemme käyttäneet GetInt ja GetString. 335 00:18:31,150 --> 00:18:37,200 Ja tietotyyppi jono sattuu ilmoitettava tässä CS50 kirjastossa. 336 00:18:37,200 --> 00:18:40,250 Puhutaan hieman enemmän syvyyttä noin miten kirjastot toimivat ja miten ne 337 00:18:40,250 --> 00:18:41,870 vuorovaikutuksessa muun koodin. 338 00:18:41,870 --> 00:18:46,220 Mutta nämä ovat kaksi tärkeintä ne, jotka me ovat kosketuksissa tähän mennessä 339 00:18:46,220 --> 00:18:48,430 kurssin. 340 00:18:48,430 --> 00:18:50,050 >> Tyyppejä. 341 00:18:50,050 --> 00:18:58,120 Nämä ovat hyvä muistaa kuinka paljon Kunkin edustaa tai miten 342 00:18:58,120 --> 00:19:02,840 tavujen kunkin tyypin requires-- 343 00:19:02,840 --> 00:19:04,990 int, 4 tavua; nieriä, 1 tavu. 344 00:19:04,990 --> 00:19:06,550 Koho on 4 tavua. 345 00:19:06,550 --> 00:19:07,782 Mikä on kaksinkertainen? 346 00:19:07,782 --> 00:19:09,032 >> Yleisö: [kuulumaton]. 347 00:19:09,032 --> 00:19:11,398 348 00:19:11,398 --> 00:19:16,240 >> SPEAKER 1: Joo, niin float mutta kaksinkertaiseksi. 349 00:19:16,240 --> 00:19:17,150 Entä kauan? 350 00:19:17,150 --> 00:19:18,400 >> Yleisö: [kuulumaton]. 351 00:19:18,400 --> 00:19:21,614 352 00:19:21,614 --> 00:19:24,680 >> SPEAKER 1: OK. 353 00:19:24,680 --> 00:19:25,410 Mikä on pitkä? 354 00:19:25,410 --> 00:19:26,660 >> Yleisö: [kuulumaton]. 355 00:19:26,660 --> 00:19:29,400 356 00:19:29,400 --> 00:19:31,450 >> SPEAKER 1: Joo, kaksinkertainen int. 357 00:19:31,450 --> 00:19:34,240 358 00:19:34,240 --> 00:19:34,705 Kyllä. 359 00:19:34,705 --> 00:19:36,100 >> Yleisö: [kuulumaton]. 360 00:19:36,100 --> 00:19:38,030 >> SPEAKER 1: Pitkä [kuulumaton]. 361 00:19:38,030 --> 00:19:41,860 Ja sitten pitkä pitkä on kaksinkertainen. 362 00:19:41,860 --> 00:19:42,814 >> Yleisö: Ei, ei. 363 00:19:42,814 --> 00:19:47,107 Pitkä on vain int. 364 00:19:47,107 --> 00:19:50,910 Se riippuu arkkitehtuuri ennen [äänetön] 365 00:19:50,910 --> 00:19:52,922 ja int ovat samankokoisia. 366 00:19:52,922 --> 00:19:54,172 [Äänetön]. 367 00:19:54,172 --> 00:19:58,841 368 00:19:58,841 --> 00:20:00,920 >> SPEAKER 1: Niin pitkä ja int ovat samat. 369 00:20:00,920 --> 00:20:02,943 Ja sitten pitkä pitkä on kaksinkertainen int. 370 00:20:02,943 --> 00:20:03,910 Cool. 371 00:20:03,910 --> 00:20:05,550 Ja sitten, mikä on viimeinen tyyppi? 372 00:20:05,550 --> 00:20:06,510 >> Yleisö: Pointer. 373 00:20:06,510 --> 00:20:10,350 >> SPEAKER 1: Joo, niin opimme hieman siitä viitteitä. 374 00:20:10,350 --> 00:20:14,015 Ja riippumatta siitä, mitä osoitin on osoittaa to-- se voisi olla char tähti 375 00:20:14,015 --> 00:20:15,880 tai int star-- 376 00:20:15,880 --> 00:20:20,530 se on aina 4 tavua osoitin. 377 00:20:20,530 --> 00:20:21,633 Kysymyksiä siitä? 378 00:20:21,633 --> 00:20:22,116 Kyllä? 379 00:20:22,116 --> 00:20:24,531 >> Yleisö: [kuulumaton]? 380 00:20:24,531 --> 00:20:29,530 >> SPEAKER 1: Niin pitkä ja int ovat sama tässä CS50 laitteen. 381 00:20:29,530 --> 00:20:32,302 >> Yleisö: Laite on täysin vaihdettavissa. 382 00:20:32,302 --> 00:20:33,510 >> SPEAKER 1: Joo. 383 00:20:33,510 --> 00:20:36,610 Niin pitkään pitkään on kaksinkertainen int. 384 00:20:36,610 --> 00:20:39,250 >> YLEISÖ: Tämä on 32 bittinen? 385 00:20:39,250 --> 00:20:40,620 >> SPEAKER 1: 32 bit, joo. 386 00:20:40,620 --> 00:20:43,572 >> Yleisö: Niin [kuulumaton]? 387 00:20:43,572 --> 00:20:46,790 >> SPEAKER 1: Kyllä, jos se ei nimenomaisesti sanoa, et 388 00:20:46,790 --> 00:20:47,870 pitäisi ottaa 32-bittinen. 389 00:20:47,870 --> 00:20:50,040 >> Yleisö: Se sanoisi jotain kuten olettaen 390 00:20:50,040 --> 00:20:51,498 arkkitehtuuri kuin laite. 391 00:20:51,498 --> 00:20:58,800 392 00:20:58,800 --> 00:21:01,710 64 bittinen, ainoat asiat, jotka muutos ovat pitkät ja viitteitä. 393 00:21:01,710 --> 00:21:05,614 Molemmat [kuultavissa]. 394 00:21:05,614 --> 00:21:06,590 >> SPEAKER 1: Niin? 395 00:21:06,590 --> 00:21:07,566 >> Yleisö: Kysymys. 396 00:21:07,566 --> 00:21:10,982 Niin yksi käytännön tietokilpailuja, se kysyy unsigned int. 397 00:21:10,982 --> 00:21:15,374 Joten miten olisi, että määritellään alkaen int [äänetön]? 398 00:21:15,374 --> 00:21:18,140 >> SPEAKER 1: unsigned ja on myös 4 tavua. 399 00:21:18,140 --> 00:21:21,172 Mutta mikä on erilaista allekirjoitettu int ja unsigned int? 400 00:21:21,172 --> 00:21:22,422 >> Yleisö: [kuulumaton]. 401 00:21:22,422 --> 00:21:24,868 402 00:21:24,868 --> 00:21:25,630 >> SPEAKER 1: Oikea. 403 00:21:25,630 --> 00:21:27,570 Yksi voi edustaa negatiivisia arvoja. 404 00:21:27,570 --> 00:21:28,580 Mutta miten se tehdään? 405 00:21:28,580 --> 00:21:30,536 >> Yleisö: [kuulumaton]. 406 00:21:30,536 --> 00:21:36,370 >> SPEAKER 1: Joo, se säästää 1 vähän edustamaan merkki. 407 00:21:36,370 --> 00:21:40,910 408 00:21:40,910 --> 00:21:45,040 Allekirjoittanut on yksi bitti edustaa merkkiä. 409 00:21:45,040 --> 00:21:48,886 Ja unsigned vain on kaikki positiivisia. 410 00:21:48,886 --> 00:21:50,365 >> Yleisö: OK. 411 00:21:50,365 --> 00:21:54,230 Niin sanot että kaksinkertainen on kaksinkertainen float? 412 00:21:54,230 --> 00:21:58,202 >> SPEAKER 1: Double on kaksi kertaa koko float, kyllä. 413 00:21:58,202 --> 00:22:01,639 >> Yleisö: Miten osoitin pitkän pitkä [kuulumaton]? 414 00:22:01,639 --> 00:22:06,058 415 00:22:06,058 --> 00:22:10,870 >> SPEAKER 1: Eli kysymys on miten osoitin pitkä long-- 416 00:22:10,870 --> 00:22:13,800 miten on, että vain neljä tavua, kun pitkä pitkä sen 8 tavua. 417 00:22:13,800 --> 00:22:17,310 Joten muistaa, mitä on osoitin, olennaisesti, aivan perusarvoa. 418 00:22:17,310 --> 00:22:19,046 >> Yleisö: [kuulumaton]. 419 00:22:19,046 --> 00:22:22,670 >> SPEAKER 1: Joo, niin osoitin on vain muistipaikka. 420 00:22:22,670 --> 00:22:28,040 Joten sillä ei ole väliä kuinka paljon tilaa että osoitin osoittaa. 421 00:22:28,040 --> 00:22:32,060 Se tarvitsee vain 4 tavua seurata Kyseisen muistipaikka. 422 00:22:32,060 --> 00:22:34,760 423 00:22:34,760 --> 00:22:36,010 Muita kysymyksiä? 424 00:22:36,010 --> 00:22:39,800 425 00:22:39,800 --> 00:22:41,050 Cool. 426 00:22:41,050 --> 00:22:42,920 427 00:22:42,920 --> 00:22:47,460 >> Joten viimeinen asia on on standardi lähtö. 428 00:22:47,460 --> 00:22:51,020 Sinun tulisi käyttää niitä usein riitä, että voit muistaa. 429 00:22:51,020 --> 00:22:54,800 Mutta tämä on, kun käytämme printf, esimerkiksi. 430 00:22:54,800 --> 00:22:59,260 Ja meillä on nämä paikkamerkeillä että kutsuttiin muodossa koodeja. 431 00:22:59,260 --> 00:23:03,910 >> Joten prosenttia c nieriää, prosenttia I int, ja voimme myös käyttää prosenttia d. 432 00:23:03,910 --> 00:23:05,130 Se on sama asia. 433 00:23:05,130 --> 00:23:08,200 Mutta yleisesti, ja CS50 me yritä käyttää prosenttiin i. 434 00:23:08,200 --> 00:23:09,860 Prosenttia f float. 435 00:23:09,860 --> 00:23:15,620 Prosenttia LD pitkään pitkään ja prosenttia s merkkijono. 436 00:23:15,620 --> 00:23:18,550 >> Samoin olemme käyttäneet muutaman Näiden ohjausmerkkijonoja. 437 00:23:18,550 --> 00:23:22,431 Esimerkiksi kenoviiva n uutta rataa. 438 00:23:22,431 --> 00:23:26,910 Tämä on juuri kun olet alustus koodi tulostaa f. 439 00:23:26,910 --> 00:23:27,260 Kyllä? 440 00:23:27,260 --> 00:23:28,906 >> Yleisö: Mikä prosenttia d? 441 00:23:28,906 --> 00:23:31,850 >> SPEAKER 1: Eli kysymys on mitä prosenttia d? 442 00:23:31,850 --> 00:23:33,270 Prosenttia d on ints. 443 00:23:33,270 --> 00:23:37,392 Prosenttia d ja prosenttia i ovat samat. 444 00:23:37,392 --> 00:23:41,130 >> Yleisö: Mitä eroa kenoviiva n ja kenoviiva r? 445 00:23:41,130 --> 00:23:45,300 >> SPEAKER 1: Eli kysymys on mitä ero takaisku n ja 446 00:23:45,300 --> 00:23:48,615 takaisku r? 447 00:23:48,615 --> 00:23:50,906 Mielestäni kenoviiva r on-- 448 00:23:50,906 --> 00:23:54,340 >> Yleisö: Niin kenoviiva r juuri siihen, palaa rivin alkuun 449 00:23:54,340 --> 00:23:56,670 ilman todella menossa uusi rivi. 450 00:23:56,670 --> 00:24:01,000 Joten jos tulostat kenoviiva r ja te palata rivin alkuun 451 00:24:01,000 --> 00:24:04,005 Sitten voit tulostaa enemmän tavaraa, korvaat kamaa, joka on jo 452 00:24:04,005 --> 00:24:04,390 [Äänetön]. 453 00:24:04,390 --> 00:24:06,725 Sekä katsoo, n todella menee uuteen linja ja menee [kuultavissa]. 454 00:24:06,725 --> 00:24:10,525 455 00:24:10,525 --> 00:24:13,915 >> SPEAKER 1: No, muita kysymyksiä? 456 00:24:13,915 --> 00:24:15,430 Kunnossa. 457 00:24:15,430 --> 00:24:18,617 Aion antaa sen pois Dan joka jatkaa. 458 00:24:18,617 --> 00:24:25,078 >> [APPLAUSE] 459 00:24:25,078 --> 00:25:08,814 460 00:25:08,814 --> 00:25:09,720 >> DAN: Kaikki righty. 461 00:25:09,720 --> 00:25:18,590 Niin minä puhua toisesta leveä erilaisia ​​ideoita luokka, joka on 462 00:25:18,590 --> 00:25:23,220 karkeasti edustaja viikolla kaksi ja alku viikko kolme ajoa 463 00:25:23,220 --> 00:25:28,690 valu, joka on vain tapa käsittelemällä arvo tietynlaisia 464 00:25:28,690 --> 00:25:30,830 arvo on eri tyyppiä. 465 00:25:30,830 --> 00:25:34,110 Joten voimme tehdä tämän merkkiä on ints, kelluu ints, ja 466 00:25:34,110 --> 00:25:35,360 pitkä pitkät kaksinkertaistaa. 467 00:25:35,360 --> 00:25:38,170 468 00:25:38,170 --> 00:25:44,500 >> Kaikki nämä asiat voidaan käyttää tavoilla kohdella joitakin numeerisia arvo 469 00:25:44,500 --> 00:25:48,370 miinus merkkiä kuten jotkut muut numeerinen arvo. 470 00:25:48,370 --> 00:25:54,480 Joten joitakin ongelmia tämän, ja Tietenkin, joka tulee kun heität 471 00:25:54,480 --> 00:25:57,860 asioita, kuten float ints. 472 00:25:57,860 --> 00:26:00,500 Joten tämä on hieman outo. 473 00:26:00,500 --> 00:26:03,170 Meillä on float, joka on 1,31. 474 00:26:03,170 --> 00:26:05,220 Me kerro se 10000. 475 00:26:05,220 --> 00:26:08,380 Ja sitten tulostaa sen int. 476 00:26:08,380 --> 00:26:09,630 Mitä tämä tuotos? 477 00:26:09,630 --> 00:26:11,600 478 00:26:11,600 --> 00:26:14,020 10000 kertaa 1,31. 479 00:26:14,020 --> 00:26:18,761 Joten 13000, on että arvaus? 480 00:26:18,761 --> 00:26:20,685 >> Yleisö: Minusta se on 10000. 481 00:26:20,685 --> 00:26:24,234 >> DAN: Joten olen kertomalla se 10000 ennen olen valamalla. 482 00:26:24,234 --> 00:26:25,202 >> Yleisö: Oh. 483 00:26:25,202 --> 00:26:27,622 Eikö siellä olla yksi 9 ja jotkut 0 numerot? 484 00:26:27,622 --> 00:26:29,270 >> DAN: Saatat olla outoja numeroa. 485 00:26:29,270 --> 00:26:32,410 486 00:26:32,410 --> 00:26:37,670 Niin oikeassa, se on 1,3 kertaa 10000. 487 00:26:37,670 --> 00:26:40,040 Joten se on 13000. 488 00:26:40,040 --> 00:26:41,313 Ja tätä ylimääräistä weird-- 489 00:26:41,313 --> 00:26:42,160 >> Yleisö: 13,100. 490 00:26:42,160 --> 00:26:42,650 >> DAN: 13,100. 491 00:26:42,650 --> 00:26:44,910 Kiitos, Rob. 492 00:26:44,910 --> 00:26:46,610 Ja tätä ylimääräistä weirdness-- 493 00:26:46,610 --> 00:26:48,060 Tämän 9,9-- 494 00:26:48,060 --> 00:26:53,860 on yksinkertaisesti koska tämä valu päätyi pyöristäminen alaspäin, jos 495 00:26:53,860 --> 00:26:55,394 sen ei pitäisi olla. 496 00:26:55,394 --> 00:26:55,871 Joo. 497 00:26:55,871 --> 00:26:58,256 >> Yleisö: valu tapahtuu kun mitään muuta? 498 00:26:58,256 --> 00:27:03,865 >> DAN: Eli koska olen tätä tulosta, se tekee tämän kerto ennen sitä 499 00:27:03,865 --> 00:27:05,230 tekee tämän valu. 500 00:27:05,230 --> 00:27:06,140 >> Yleisö: [kuulumaton]. 501 00:27:06,140 --> 00:27:11,350 >> DAN: Mielestäni olisi heittää ensin, joo, mikä olisi 10000. 502 00:27:11,350 --> 00:27:12,610 Entä muuta? 503 00:27:12,610 --> 00:27:13,330 Cool. 504 00:27:13,330 --> 00:27:16,344 Tämä on siis 13099. 505 00:27:16,344 --> 00:27:17,840 Miksi näin tapahtuu? 506 00:27:17,840 --> 00:27:18,900 Epätäsmällisyys. 507 00:27:18,900 --> 00:27:21,020 >> Kellukkeet eivät ole täydellisiä. 508 00:27:21,020 --> 00:27:27,550 Ne voivat edustaa vain numeroita joitakin merkittäviä lukuja. 509 00:27:27,550 --> 00:27:35,120 Joten jos me tulostaa 8 sig viikunat tämän juoksun, saamme eräänlainen 510 00:27:35,120 --> 00:27:36,800 ruma näköinen numero. 511 00:27:36,800 --> 00:27:45,580 Ja se johtuu 1,31 ei voi tarkasti edustaa yksinkertaisella 512 00:27:45,580 --> 00:27:49,000 valtuudet kaksi konetta. 513 00:27:49,000 --> 00:27:53,530 Joten se päätyy ottaen lähimpänä arvata, mikä päätyy 514 00:27:53,530 --> 00:27:55,710 on hieman alhainen. 515 00:27:55,710 --> 00:27:57,730 Järkeä? 516 00:27:57,730 --> 00:27:59,110 OK. 517 00:27:59,110 --> 00:28:05,840 >> Nyt kytketty ovat eri tavalla teet ehtolauseet jossa kaikki 518 00:28:05,840 --> 00:28:09,900 välitämme on yksi muuttuja. 519 00:28:09,900 --> 00:28:16,570 Joten tässä erityisessä esimerkissä olemme saada kokonaisluku käyttäjä. 520 00:28:16,570 --> 00:28:21,070 Ja sitten me tarkastelemme mitä se kokonaisluku on. 521 00:28:21,070 --> 00:28:23,500 Oletettavasti se on numero yhdestä neljään. 522 00:28:23,500 --> 00:28:24,800 Sitähän kysymme. 523 00:28:24,800 --> 00:28:28,450 >> Niin et kytkin muuttujan nimi. 524 00:28:28,450 --> 00:28:34,290 Sitten asetat tapauksissa mahdollista arvoja se voisi olla. 525 00:28:34,290 --> 00:28:37,730 Joten jos toinen, sano se alhainen. 526 00:28:37,730 --> 00:28:41,080 Ja sitten rikot ulos kytkimen kunnossa niin 527 00:28:41,080 --> 00:28:43,270 et jatka. 528 00:28:43,270 --> 00:28:44,830 >> Seuraavassa case-- 529 00:28:44,830 --> 00:28:46,940 joten asia kaksi ja asia kolme-- 530 00:28:46,940 --> 00:28:51,920 jos se on asiassa kaksi se vain putoaa alas ensimmäinen rivi koodia se pitää kanssa 531 00:28:51,920 --> 00:28:55,400 Isojen kolme kunnes se näkee tauko. 532 00:28:55,400 --> 00:29:00,430 Joten syy saat asian yksi tulostaa vain vähän, koska en 533 00:29:00,430 --> 00:29:01,890 on tämä tauko täällä. 534 00:29:01,890 --> 00:29:05,360 Jos minä vaikkapa huomiotta tämä break-- jos Heitin tämän breakaway-- 535 00:29:05,360 --> 00:29:09,740 se tulostaa alhainen, ja niin se olisi tulostaa keskellä, ja sitten se rikkoisi. 536 00:29:09,740 --> 00:29:12,200 >> Joten tauot ovat tärkeä osa kytkimen olosuhteet ja 537 00:29:12,200 --> 00:29:14,340 niiden pitäisi olla siellä. 538 00:29:14,340 --> 00:29:20,070 Tapauksista, joita ei mainita erikseen hoidetaan oletus 539 00:29:20,070 --> 00:29:26,645 tapauksessa kytkin ja pitäisi heittää. 540 00:29:26,645 --> 00:29:31,363 >> Yleisö: Eli 1, 2, 3, ja 4 olisivat n? 541 00:29:31,363 --> 00:29:33,310 >> DAN: Arvot, että n voi olla. 542 00:29:33,310 --> 00:29:34,654 Kyllä. 543 00:29:34,654 --> 00:29:35,146 Joo? 544 00:29:35,146 --> 00:29:37,606 >> Yleisö: Joten kun olet että [kuulumaton]? 545 00:29:37,606 --> 00:29:44,002 546 00:29:44,002 --> 00:29:46,830 >> DAN: Olisit tulostaa alhainen, ja sitten se tulostaa keskellä, ja 547 00:29:46,830 --> 00:29:47,400 niin se olisi tauko. 548 00:29:47,400 --> 00:29:50,244 >> Yleisö: Miksi se tulostaa keskimmäinen jos [äänetön]? 549 00:29:50,244 --> 00:29:54,036 550 00:29:54,036 --> 00:30:00,550 >> DAN: Joten kaikki alle tapaus ennen taukoa kuuluu. 551 00:30:00,550 --> 00:30:09,390 Joten kyseessä yksi print on alla tapaus yksi kuten tämä seuraava tulosta. 552 00:30:09,390 --> 00:30:09,890 Joo? 553 00:30:09,890 --> 00:30:11,140 >> Yleisö: [kuulumaton]? 554 00:30:11,140 --> 00:30:15,890 555 00:30:15,890 --> 00:30:22,170 >> DAN: Eli tämä numero on vain tietyn arvo että tämä muuttuja 556 00:30:22,170 --> 00:30:23,420 voi, eikö? 557 00:30:23,420 --> 00:30:26,740 558 00:30:26,740 --> 00:30:28,490 Onko järkeä? 559 00:30:28,490 --> 00:30:28,990 Joo. 560 00:30:28,990 --> 00:30:31,490 >> Yleisö: [kuulumaton]? 561 00:30:31,490 --> 00:30:34,130 >> DAN: Kyllä, kyseessä kaksi olisi tulostaa keskellä ja sitten tauko. 562 00:30:34,130 --> 00:30:35,380 >> Yleisö: [kuulumaton]? 563 00:30:35,380 --> 00:30:37,954 564 00:30:37,954 --> 00:30:40,050 >> DAN: Mielestäni mitään? 565 00:30:40,050 --> 00:30:43,855 Mitä muita tietotyyppejä voit siirtyä? 566 00:30:43,855 --> 00:30:46,320 >> Yleisö: Voit vaihtaa minkä tahansa tietotyyppejä. 567 00:30:46,320 --> 00:30:50,905 Mutta se vain tarkoittaa jotain yli merkkiä ja ints ja muuta vastaavaa, koska 568 00:30:50,905 --> 00:30:55,600 jos olet siirtymässä osoitin että ei oikeastaan ​​mitään järkeä, 569 00:30:55,600 --> 00:30:59,555 Vaihtamisen kuormia, jos se edes katsotaanpa teet näin, koska liukuluku 570 00:30:59,555 --> 00:31:02,840 tarkkuus, et todellakaan halua tehdä sitä joka tapauksessa. 571 00:31:02,840 --> 00:31:07,320 Joten aika paljon, vain ints ja merkkiä ja muuta vastaavaa. 572 00:31:07,320 --> 00:31:12,360 >> DAN: Joo, se kun on nimenomainen arvot, että tiedät, luulen, voi olla 573 00:31:12,360 --> 00:31:14,250 että kytkin on todella hyödyllinen. 574 00:31:14,250 --> 00:31:17,094 575 00:31:17,094 --> 00:31:18,990 Hyvä? 576 00:31:18,990 --> 00:31:21,370 OK. 577 00:31:21,370 --> 00:31:26,180 >> Soveltamisala on alue, joka julisti muuttuja laajennetaan. 578 00:31:26,180 --> 00:31:32,190 Joten tässä vähän koodinpätkän minulla on, se olisi täynnä virheitä. 579 00:31:32,190 --> 00:31:41,450 Ja syy on julistin tämän int i puitteissa tätä varten silmukka. 580 00:31:41,450 --> 00:31:46,390 Ja sitten yritän viitata että i ulkopuolella, että silmukka soveltamisala. 581 00:31:46,390 --> 00:31:50,330 >> Joten periaatteessa, voit ajatella soveltamisala kuin mitään, että ilmoitat 582 00:31:50,330 --> 00:31:59,750 joiden sisällä joukko aaltosulkeita vain olemassa näissä aaltosulkeita. 583 00:31:59,750 --> 00:32:04,990 Ja jos yrität käyttää sitä muuttuja niiden ulkopuolella aaltosulkeita, sinun 584 00:32:04,990 --> 00:32:08,356 saada virheilmoituksen kääntäjä. 585 00:32:08,356 --> 00:32:08,812 Joo? 586 00:32:08,812 --> 00:32:09,724 >> Yleisö: Eli tämä ei toimi? 587 00:32:09,724 --> 00:32:11,790 >> DAN: Tämä ei toimi, kyllä. 588 00:32:11,790 --> 00:32:17,190 589 00:32:17,190 --> 00:32:18,660 Strings. 590 00:32:18,660 --> 00:32:19,780 String char *. 591 00:32:19,780 --> 00:32:22,250 Ne ovat täsmälleen samat. 592 00:32:22,250 --> 00:32:25,540 Ne ovat vain osoittimia merkkiä. 593 00:32:25,540 --> 00:32:33,000 Ja kaikki jouset että sinulla pitäisi lopettaa kanssa kenoviivaan nolla, joka on vain 594 00:32:33,000 --> 00:32:34,410 c sopimusta. 595 00:32:34,410 --> 00:32:36,680 >> Sitä kutsutaan tyhjän päätteen. 596 00:32:36,680 --> 00:32:39,050 Ja NULL-- 597 00:32:39,050 --> 00:32:41,670 pääoma N, pääoma U, pääoman L, pääoman minä-- 598 00:32:41,670 --> 00:32:44,290 ei ole sama kuin NULL terminaattori. 599 00:32:44,290 --> 00:32:46,640 Tämä on osoitin. 600 00:32:46,640 --> 00:32:48,280 Tämä on merkki. 601 00:32:48,280 --> 00:32:49,530 Ne ovat hyvin erilaisia. 602 00:32:49,530 --> 00:32:50,200 Muista se. 603 00:32:50,200 --> 00:32:52,320 Se tulee olemaan tietokilpailu, luultavasti. 604 00:32:52,320 --> 00:32:54,040 En ole nähnyt tietokilpailu. 605 00:32:54,040 --> 00:32:57,880 606 00:32:57,880 --> 00:32:58,840 Joo? 607 00:32:58,840 --> 00:33:01,232 >> Yleisö: Niin NULL on vaikkapa osoitin? 608 00:33:01,232 --> 00:33:01,995 >> DAN: Kyllä. 609 00:33:01,995 --> 00:33:05,170 >> Yleisö: Mitä [kuulumaton]? 610 00:33:05,170 --> 00:33:10,050 >> DAN: Jos sanon, malloc kutsutaan, kun ei ole tarpeeksi muistia saada 611 00:33:10,050 --> 00:33:14,400 koosta riippumatta olet pyytänyt, malloc palaa NULL. 612 00:33:14,400 --> 00:33:19,550 Se on pohjimmiltaan aina kun toiminto on tarkoitus palauttaa osoittimen, voit 613 00:33:19,550 --> 00:33:22,600 täytyy tarkistaa vastaan ​​NULL koska NULL on melko good-- 614 00:33:22,600 --> 00:33:25,260 se on, tavallaan, roskat arvo. 615 00:33:25,260 --> 00:33:27,050 Se on nolla niin pitkälle kuin viitteitä mennä. 616 00:33:27,050 --> 00:33:29,630 617 00:33:29,630 --> 00:33:32,250 >> Aina kun soittaa toiminto, joka palauttaa osoittimen. 618 00:33:32,250 --> 00:33:35,960 Olet menossa haluavat tarkistaa olla Varmista, että osoitin ei ole NULL 619 00:33:35,960 --> 00:33:37,760 koska NULL on hyvin yleistä. 620 00:33:37,760 --> 00:33:40,160 Se on tavallaan roskat tuottoa. 621 00:33:40,160 --> 00:33:44,902 Joten jos jotain ei mene oikein, vain palauttaa NULL sijaan. 622 00:33:44,902 --> 00:33:45,898 >> Yleisö: [kuulumaton]? 623 00:33:45,898 --> 00:33:48,922 >> DAN: Kyllä, ja se on tämä. 624 00:33:48,922 --> 00:33:51,750 >> Yleisö: [kuulumaton]? 625 00:33:51,750 --> 00:33:52,800 >> DAN: Spell se tästä. 626 00:33:52,800 --> 00:33:54,150 Se tyhjän päätteen. 627 00:33:54,150 --> 00:33:56,560 Se on pieniä N-U-L-L, jos olet oikeinkirjoitus sen. 628 00:33:56,560 --> 00:33:59,860 >> Yleisö: Ja minä vain meni takaisin ja testata sitä. 629 00:33:59,860 --> 00:34:03,010 Ja jos yrität laittaa liukuluku arvo tulee vaihtaa, se huutaa sinulle 630 00:34:03,010 --> 00:34:05,916 sanoen lausuma edellyttää ilme kokonaisluku tyyppi. 631 00:34:05,916 --> 00:34:07,166 >> DAN: Ole hyvä. 632 00:34:07,166 --> 00:34:09,639 633 00:34:09,639 --> 00:34:12,246 Mutta joo, mikä oli kysymys olikaan? 634 00:34:12,246 --> 00:34:13,496 >> Yleisö: [kuulumaton]? 635 00:34:13,496 --> 00:34:16,150 636 00:34:16,150 --> 00:34:23,679 >> DAN: Eli pääoma N, pääoma U, pääoman L, pääoma L on todellinen c juttu. 637 00:34:23,679 --> 00:34:29,719 On nollaosoittimen ja tahtoa vain kohdella sellaisina. 638 00:34:29,719 --> 00:34:33,530 Et koskaan yritä ja oikeinkirjoituksen NULL hahmosi ja katso kaikki 639 00:34:33,530 --> 00:34:35,630 muulla tavalla kuin tämä. 640 00:34:35,630 --> 00:34:36,610 Joo? 641 00:34:36,610 --> 00:34:42,490 >> Yleisö: Niin palaavat char max tai jotain muistiinpanoja, eikö 642 00:34:42,490 --> 00:34:43,960 ilmentää sama toiminto kuten [kuulumaton]? 643 00:34:43,960 --> 00:34:50,655 644 00:34:50,655 --> 00:34:54,949 >> Yleisö: Niin tarkoitatte palaamassa merkkiä MAX getchar, tai 645 00:34:54,949 --> 00:34:55,444 mitä se on? 646 00:34:55,444 --> 00:34:55,940 >> Yleisö: Joo. 647 00:34:55,940 --> 00:34:58,620 >> Yleisö: Joo, niin yleinen termi kaikki nämä asiat 648 00:34:58,620 --> 00:34:59,920 ovat kiinteän pisteen arvoista. 649 00:34:59,920 --> 00:35:03,640 Niin kuin palaavat int MAX GetInt ja nieriää MAX getchar, se on 650 00:35:03,640 --> 00:35:06,010 pitäisi olla, okei, jos nämä asiat palaavat meille, 651 00:35:06,010 --> 00:35:07,210 jotain meni pieleen. 652 00:35:07,210 --> 00:35:09,950 >> Sillä osoittimet, me vain sattuu olemaan Tämän kiinteän pisteen arvo, että jokainen 653 00:35:09,950 --> 00:35:10,750 sopii hänen. 654 00:35:10,750 --> 00:35:13,210 Ja tämä on asia palaat kun asiat menevät pieleen. 655 00:35:13,210 --> 00:35:15,910 Joten char max on mitä käytämme edustaa jotain 656 00:35:15,910 --> 00:35:18,100 kuten NULL tai getchar. 657 00:35:18,100 --> 00:35:23,420 >> Yleisö: Joten jos olet testaus getchar, voisitko laittaa NULL? 658 00:35:23,420 --> 00:35:23,910 Olisiko, jotka tekevät eron? 659 00:35:23,910 --> 00:35:25,400 >> DAN: Et voinut vain tarkistaa NULL. 660 00:35:25,400 --> 00:35:30,130 Sinun täytyy tarkistaa merkkiä max koska paluuarvo toiminto on 661 00:35:30,130 --> 00:35:35,416 merkki ei osoittimen. 662 00:35:35,416 --> 00:35:35,888 Joo? 663 00:35:35,888 --> 00:35:38,248 >> Yleisö: Tämä kysymys koskee merkkijonon pituus. 664 00:35:38,248 --> 00:35:40,136 Tuleeko jo NULL merkki? 665 00:35:40,136 --> 00:35:41,000 >> DAN: o 666 00:35:41,000 --> 00:35:45,930 Ja se on todella miten merkkijonon pituus tietää lopettaa, koska se menee läpi 667 00:35:45,930 --> 00:35:49,070 oman joukko merkkejä, kunnes se näkee NULL merkki. 668 00:35:49,070 --> 00:35:51,030 Ja sitten se on kuin kaikki oikeassa, olen valmis. 669 00:35:51,030 --> 00:35:52,130 >> Yleisö: [kuulumaton] viisi? 670 00:35:52,130 --> 00:35:53,990 >> DAN: Hei olisi viisi. 671 00:35:53,990 --> 00:35:55,240 Jep. 672 00:35:55,240 --> 00:35:59,580 673 00:35:59,580 --> 00:36:02,880 Joten paneelit ovat jatkuvia lohkot muistia. 674 00:36:02,880 --> 00:36:08,480 Niillä on välitön pääsy sanomalla taulukon nimen ja sitten, kihara 675 00:36:08,480 --> 00:36:16,720 henkselit, mitä indeksi haluat mennä to, ne indeksoidaan nollasta kautta 676 00:36:16,720 --> 00:36:20,100 pituutta array miinus 1. 677 00:36:20,100 --> 00:36:23,070 >> Ja he ilmoittama tyyppi asia, että olet tallentaminen 678 00:36:23,070 --> 00:36:29,750 array, taulukon nimen, ja sitten koosta on, että jono. 679 00:36:29,750 --> 00:36:36,660 Joten tämä on char joukko pituus kuusi, joka on näitä arvoja. 680 00:36:36,660 --> 00:36:42,050 681 00:36:42,050 --> 00:36:42,700 Joo? 682 00:36:42,700 --> 00:36:43,950 >> Yleisö: [kuulumaton]? 683 00:36:43,950 --> 00:36:47,980 684 00:36:47,980 --> 00:36:48,460 >> DAN: Joo. 685 00:36:48,460 --> 00:36:51,340 >> Yleisö: [kuulumaton]? 686 00:36:51,340 --> 00:36:56,700 >> DAN: Jos sinulla on mitä on meneillään array jo tehty. 687 00:36:56,700 --> 00:37:02,260 Joten voi määrittää tämän sen sijaan, sanoa, nieriää, mikä nimi 688 00:37:02,260 --> 00:37:12,200 array on tyhjä suluissa vastaa kihara ahdin H pilkku E pilkku L pilkku L pilkulla 689 00:37:12,200 --> 00:37:16,290 O pilkku NULL merkki ja kihara ahdin. 690 00:37:16,290 --> 00:37:18,180 Jotka toimivat myös vakuutus. 691 00:37:18,180 --> 00:37:20,886 >> Yleisö: [kuulumaton]? 692 00:37:20,886 --> 00:37:23,110 >> DAN: Sitten sinun täytyy olla koon jo tehty. 693 00:37:23,110 --> 00:37:23,896 >> Yleisö: [kuulumaton]? 694 00:37:23,896 --> 00:37:25,146 >> DAN: Kyllä. 695 00:37:25,146 --> 00:37:30,114 696 00:37:30,114 --> 00:37:32,420 Kaikki righty. 697 00:37:32,420 --> 00:37:36,430 Komentoriviargumentteja ovat tapa saada käyttäjän syötettä kuin 698 00:37:36,430 --> 00:37:39,380 argumentit main. 699 00:37:39,380 --> 00:37:40,600 Pääasialliset ottaa kaksi argumenttia. 700 00:37:40,600 --> 00:37:47,680 Useita väitteitä, jota välitetään komentoriviltä ja 701 00:37:47,680 --> 00:37:55,340 merkkijono vektori tai merkkijono array kaikkien argumentit. 702 00:37:55,340 --> 00:38:07,840 >> Jos siis vaikkapa nimeltään toiminto kuten dot out 1 tilaa, 2 tilaa, kolme, 703 00:38:07,840 --> 00:38:10,110 argc olisi 4. 704 00:38:10,110 --> 00:38:17,370 Ja argv 0 olisi piste pois. 705 00:38:17,370 --> 00:38:19,130 Argv1 olisi 1. 706 00:38:19,130 --> 00:38:23,030 argv2 olisi 2. argv3 olisi 3, tässä nimenomaisessa tapauksessa. 707 00:38:23,030 --> 00:38:23,310 Joo? 708 00:38:23,310 --> 00:38:25,400 >> Yleisö: [kuulumaton]? 709 00:38:25,400 --> 00:38:34,010 >> DAN: viimeinen alkio koska matriisi on pituus argc plus 710 00:38:34,010 --> 00:38:41,050 yksi argB, viimeinen osa on nollaosoittimen. 711 00:38:41,050 --> 00:38:42,580 Se on argc plus 1. 712 00:38:42,580 --> 00:38:46,210 713 00:38:46,210 --> 00:38:52,150 Joten siinä tapauksessa, että sanoin vain, että olisi argv 0 on piste pois. 714 00:38:52,150 --> 00:38:56,330 argv 1 on 1. argv2 on 2. argv 3 on 3. 715 00:38:56,330 --> 00:39:03,490 argv 4, joka on yksi suurempi kuin argc olisi NULL. 716 00:39:03,490 --> 00:39:04,870 >> Ja se nollaosoittimen. 717 00:39:04,870 --> 00:39:06,590 Kyllä. 718 00:39:06,590 --> 00:39:11,250 Ja se johtuu merkkijono on char tähti on osoitin. 719 00:39:11,250 --> 00:39:14,102 Joten sen on oltava samaa tyyppiä. 720 00:39:14,102 --> 00:39:14,595 Joo? 721 00:39:14,595 --> 00:39:16,074 >> Yleisö: Kaksi kysymystä. 722 00:39:16,074 --> 00:39:21,004 Joten, mitä eroa Tämän ja GetString muu kuin yhden tyyppinen 723 00:39:21,004 --> 00:39:22,483 käyttäjän moottori? 724 00:39:22,483 --> 00:39:25,934 Ja kaksi, on se tallennetaan sinun miesmuistiin? 725 00:39:25,934 --> 00:39:28,399 Niin kuin, GetString olisi olla [äänetön]? 726 00:39:28,399 --> 00:39:31,357 727 00:39:31,357 --> 00:39:33,650 >> DAN: minne se tallennetaan? 728 00:39:33,650 --> 00:39:34,905 En tiedä missä se on tallennettu. 729 00:39:34,905 --> 00:39:40,000 >> Yleisö: Niin, todella, tiedät miten tahansa toiminnolla voit kutsua sitä väitteet 730 00:39:40,000 --> 00:39:42,170 tallennetaan pino? 731 00:39:42,170 --> 00:39:46,610 Joten argc ja argv ovat argumentteja main ja ne ovat pinoon, tai oikeastaan 732 00:39:46,610 --> 00:39:49,131 yläpuolella, mitä mieltä olet kuten alku pinon. 733 00:39:49,131 --> 00:39:53,490 Mikä oli toinen osa Kysymyksen? 734 00:39:53,490 --> 00:39:56,821 >> Yleisö: Joten mitä [äänetön]? 735 00:39:56,821 --> 00:40:00,990 >> DAN: Joo, se on vain erilainen tapa saada käyttäjän syötettä. 736 00:40:00,990 --> 00:40:06,030 Tämä yksi on hieman tehokkaampi ja se on kätevämpi skriptejä, koska olet 737 00:40:06,030 --> 00:40:10,070 voi vain argumentteja tärkein toiminto eikä tarvitse odottaa 738 00:40:10,070 --> 00:40:13,400 käyttäjille, jos sinulla ei ole mitään käyttäjille. 739 00:40:13,400 --> 00:40:16,280 >> Yleisö: Ja joo, saat jouset olisi [äänetön]. 740 00:40:16,280 --> 00:40:17,922 Se tallentaa tavaraa tarvitset. 741 00:40:17,922 --> 00:40:18,834 >> DAN: Niin? 742 00:40:18,834 --> 00:40:21,114 >> Yleisö: [kuulumaton]? 743 00:40:21,114 --> 00:40:27,545 >> DAN: Kyllä, argv 0 sisältää aina dot slash toiminnon puhelun. 744 00:40:27,545 --> 00:40:28,042 Joo? 745 00:40:28,042 --> 00:40:29,292 >> Yleisö: [kuulumaton]? 746 00:40:29,292 --> 00:40:33,509 747 00:40:33,509 --> 00:40:37,310 >> DAN: Kyllä, kaikki argumentit ovat päättyi NULL merkki, koska ne 748 00:40:37,310 --> 00:40:38,310 ovat merkkijonoja. 749 00:40:38,310 --> 00:40:40,892 >> Yleisö: [kuulumaton]? 750 00:40:40,892 --> 00:40:44,116 >> DAN: Kyllä, argv argc on nollaosoittimen. 751 00:40:44,116 --> 00:40:45,112 >> Yleisö: [kuulumaton]? 752 00:40:45,112 --> 00:40:47,104 >> DAN: Ai niin. 753 00:40:47,104 --> 00:40:48,100 Joo, anteeksi. 754 00:40:48,100 --> 00:40:49,594 >> Yleisö: Niin [kuulumaton]? 755 00:40:49,594 --> 00:41:08,518 756 00:41:08,518 --> 00:41:16,340 >> DAN: Joten kysymys on, jos sinulla on ollut komentoriviltä dot slash dot ulos 1, 2, 757 00:41:16,340 --> 00:41:20,410 olisi määrä komentoriviltä argumentit olla kaksi tai se olisi kolme? 758 00:41:20,410 --> 00:41:24,420 759 00:41:24,420 --> 00:41:28,240 >> Yleisö: Mielestäni ei niin väliä. 760 00:41:28,240 --> 00:41:31,370 Minulla on tapana sanoa, oh, et ei läpäissyt kaikki komentoriviargumentteja kun, 761 00:41:31,370 --> 00:41:32,730 ilmeisesti, soitit toimintoa. 762 00:41:32,730 --> 00:41:37,950 Joten minulla on tapana ääneen sulkea toiminnon komentoriviltä 763 00:41:37,950 --> 00:41:40,350 argumentit vaikka se on sisältyvät argv. 764 00:41:40,350 --> 00:41:42,600 >> DAN: Mutta jos se oli test-- 765 00:41:42,600 --> 00:41:46,550 yeah-- ja jos sanot jotain kuten argc on yhtä suuri kuin 3, 766 00:41:46,550 --> 00:41:48,512 olet turvassa seisoo. 767 00:41:48,512 --> 00:41:49,416 Joo? 768 00:41:49,416 --> 00:41:50,666 >> Yleisö: [kuulumaton]? 769 00:41:50,666 --> 00:42:00,990 770 00:42:00,990 --> 00:42:09,510 >> DAN: Uskon, että jos soittamisen sijaan tämän vuonna argc ja string argv kiinnikkeet 771 00:42:09,510 --> 00:42:14,350 mutta säilyttänyt saman tyyppisiä ja soitti juuri heille jotain erilaista kuin 772 00:42:14,350 --> 00:42:16,640 ja b, olisi se silti toimii? 773 00:42:16,640 --> 00:42:18,790 Ja se vielä toimi, voisitte vain-- 774 00:42:18,790 --> 00:42:21,520 sen sijaan käyttää argc-- haluat käyttää ja b. 775 00:42:21,520 --> 00:42:24,436 776 00:42:24,436 --> 00:42:25,408 Joo? 777 00:42:25,408 --> 00:42:26,658 >> Yleisö: [kuulumaton]? 778 00:42:26,658 --> 00:42:34,642 779 00:42:34,642 --> 00:42:38,850 >> DAN: Eli kysymys on GetString on aiotaan säilyttää muistin kasaan 780 00:42:38,850 --> 00:42:42,280 koska GetString on char *. 781 00:42:42,280 --> 00:42:47,530 Se tallentaa muistiin kasaan, koska se kehottaa nyt malloc sisällä todellinen 782 00:42:47,530 --> 00:42:49,258 täytäntöönpano GetString. 783 00:42:49,258 --> 00:42:53,210 784 00:42:53,210 --> 00:42:55,090 OK, liikkuu. 785 00:42:55,090 --> 00:42:55,950 >> Turvallisuus. 786 00:42:55,950 --> 00:43:01,090 Joten olla todella turvallinen, voit luottaa ei yksi ja annat kukaan pääsyä mihinkään 787 00:43:01,090 --> 00:43:04,540 tietosi, minkä vuoksi jokainen rakentaa oman koneita, 788 00:43:04,540 --> 00:43:09,580 omat käyttöjärjestelmänsä, kaikki ohjelmat tyhjästä, ja ilmeisesti 789 00:43:09,580 --> 00:43:13,410 Älä liitä mitään muita koneita Internetin kautta. 790 00:43:13,410 --> 00:43:17,350 Joten tietokoneet ovat epävarmoja. 791 00:43:17,350 --> 00:43:19,200 He todella ovat. 792 00:43:19,200 --> 00:43:20,940 Meidän täytyy luottaa muihin ihmisiin. 793 00:43:20,940 --> 00:43:26,500 >> Ja ajatus turvallisuuteen on, että olet yrittää rajoittaa määrää 794 00:43:26,500 --> 00:43:27,540 luottamus, että tarvitset. 795 00:43:27,540 --> 00:43:32,080 Ja yksi keino teette sen kautta kryptografia. 796 00:43:32,080 --> 00:43:34,950 Salakirjoitus on pääosin meillä on salaisuuksia. 797 00:43:34,950 --> 00:43:38,880 >> Joskus meidän on läpäistävä salaisuuksia pitkin kautta, esimerkiksi internetin tai 798 00:43:38,880 --> 00:43:39,980 muita asioita. 799 00:43:39,980 --> 00:43:43,180 Ja me emme halua ihmisten tietää nämä salaisuudet. 800 00:43:43,180 --> 00:43:50,100 Joten me salata salaisuutemme tulee tapa että toivomme kukaan ei voi selvittää. 801 00:43:50,100 --> 00:43:51,600 >> Joten me used-- 802 00:43:51,600 --> 00:43:54,340 läpi kurssin tämän class-- 803 00:43:54,340 --> 00:44:00,750 asioita, kuten Caesar salakirjoitus ja [Äänetön], jotka ovat molemmat hyvin, hyvin 804 00:44:00,750 --> 00:44:03,200 turvaton tapoja salata asioita. 805 00:44:03,200 --> 00:44:07,930 Ne on helppo selvittää, mitä he ovat ja mitä salaisuuksia ovat. 806 00:44:07,930 --> 00:44:12,130 Todellisessa maailmassa käyttää paljon enemmän monimutkainen salausmalleja. 807 00:44:12,130 --> 00:44:13,880 Ja me ei päästä paljon enemmän. 808 00:44:13,880 --> 00:44:18,280 809 00:44:18,280 --> 00:44:19,430 >> Virheenkorjaus. 810 00:44:19,430 --> 00:44:20,785 GDB on paras. 811 00:44:20,785 --> 00:44:24,014 812 00:44:24,014 --> 00:44:25,810 Aion korostaa tätä uudelleen. 813 00:44:25,810 --> 00:44:30,920 Käytä GDB koko ajan joka aikaa sinulla on ongelma. 814 00:44:30,920 --> 00:44:36,030 Komennot, jotka ovat hyödyllisiä GDB ovat tauko, jonka ohitat joko linja 815 00:44:36,030 --> 00:44:41,330 numero, funktion nimi, pääasiallisesti jos koodissa haluat lopettaa, 816 00:44:41,330 --> 00:44:45,600 ja pystyttävä hallitsemaan. 817 00:44:45,600 --> 00:44:54,140 >> Tulosta vie vaihteleva ja tulostaa mitä se muuttuja on, että 818 00:44:54,140 --> 00:44:55,990 kohta teidän suorituksen. 819 00:44:55,990 --> 00:45:00,130 Seuraava liikkuu oman suorituksen pitkin yksi askel. 820 00:45:00,130 --> 00:45:05,050 Ja askel astuu sisään funktio oman suorituksen. 821 00:45:05,050 --> 00:45:10,480 >> Muita asioita ajetaan, joka on, miten olet todella ajaa koodia. 822 00:45:10,480 --> 00:45:16,630 Jatka toteuttaa kaikki tarvittavat toimet päästä seuraavalle taitekohta. 823 00:45:16,630 --> 00:45:18,300 Ja monia, monia muita. 824 00:45:18,300 --> 00:45:19,040 Tarkastella niitä. 825 00:45:19,040 --> 00:45:19,901 Ne ovat suuria. 826 00:45:19,901 --> 00:45:20,863 Joo? 827 00:45:20,863 --> 00:45:22,113 >> Yleisö: [kuulumaton]? 828 00:45:22,113 --> 00:45:26,635 829 00:45:26,635 --> 00:45:28,200 >> DAN: Kyllä, joka on debuggerin. 830 00:45:28,200 --> 00:45:34,230 Joten debuggeri on ohjelma, joka voit debug ohjelman. 831 00:45:34,230 --> 00:45:39,931 Se ei ole ohjelma, joka etsii vikoja varten te, vaikka se olisi hienoa. 832 00:45:39,931 --> 00:45:43,020 833 00:45:43,020 --> 00:45:46,040 >> Ja viimeinen on minulle hakuun. 834 00:45:46,040 --> 00:45:51,470 Joten tyyppisiä haku että puhuimme noin tässä luokassa ovat lineaarisia haku, 835 00:45:51,470 --> 00:45:55,960 joka on vain että näytät läpi kunkin elementti hakuavaruuden, yksi 836 00:45:55,960 --> 00:46:00,410 elementti kerrallaan, kunnes löydät mitä etsit tai kunnes tulet 837 00:46:00,410 --> 00:46:03,350 loppuun hakua tilaa, joka kohta sanot, että et löytänyt 838 00:46:03,350 --> 00:46:06,360 elementti, joka etsit. 839 00:46:06,360 --> 00:46:13,450 Ja tämä vie parhaimmillaankin vakiona aika, joka on 0 ja 1 ja pahimmillaan lineaarinen 840 00:46:13,450 --> 00:46:16,070 aika, joka on 0 ja n. 841 00:46:16,070 --> 00:46:19,250 >> Binäärihaku, joka tarvitsee ikävä elementtejä. 842 00:46:19,250 --> 00:46:24,230 Menet keskelle teidän elementtejä, onko elementti etsit 843 00:46:24,230 --> 00:46:30,120 on suurempi tai pienempi kuin elementin että olet keskellä. 844 00:46:30,120 --> 00:46:36,510 Se se on suurempi, sanot että pohja Etsintäsi tilaa on 845 00:46:36,510 --> 00:46:41,550 nykyinen sijainti, keskellä, ja olet käynnistänyt prosessin. 846 00:46:41,550 --> 00:46:46,150 Jos se on pienempi, näytät sanoa että sanot-- joo, mitä kuuluu? 847 00:46:46,150 --> 00:46:47,400 >> Yleisö: [kuulumaton]? 848 00:46:47,400 --> 00:46:51,000 849 00:46:51,000 --> 00:46:54,260 >> DAN: Kyllä. 850 00:46:54,260 --> 00:46:58,360 Minkäänlaista sort joka on opetettu luokka on reilun pelin testi. 851 00:46:58,360 --> 00:47:01,504 852 00:47:01,504 --> 00:47:04,920 >> [Naurua] 853 00:47:04,920 --> 00:47:10,260 >> DAN: Ja se, että sinulla ei ole ollut tehdä se ongelma asettaa, se on reilua 854 00:47:10,260 --> 00:47:12,420 peli testi. 855 00:47:12,420 --> 00:47:15,186 >> Yleisö: Voimmeko mennä sen yli, miten to-- 856 00:47:15,186 --> 00:47:17,052 >> DAN: Se on mennyt ohi. 857 00:47:17,052 --> 00:47:20,496 >> Kaiutin 2: todellinen koodi [Äänetön] on study.cs50.net. 858 00:47:20,496 --> 00:47:25,910 859 00:47:25,910 --> 00:47:32,680 Joten jos tarkastellaan käytännön ongelma vuonna yhdistämisen tavallaan sivuilta 860 00:47:32,680 --> 00:47:35,880 study.cs50.net, on koodi toteuttamiseksi yhdistää tavallaan. 861 00:47:35,880 --> 00:47:38,550 Joten sinun ei tarvitse toteuttaa itse tänä iltana. 862 00:47:38,550 --> 00:47:42,090 Mutta varmista, että ymmärrät sen melko kuin vain ulkoa sitä. 863 00:47:42,090 --> 00:47:45,035 >> Yleisö: [kuulumaton]? 864 00:47:45,035 --> 00:47:49,720 >> Kaiutin 2: Yhdistämisen sort sivu study.cs50.net, on käytäntö 865 00:47:49,720 --> 00:47:53,570 ongelma, että jos selaat ongelma, aivan lopussa on 866 00:47:53,570 --> 00:47:56,280 ratkaisu, joka on yhdistämisen lajitella täytäntöönpanoa. 867 00:47:56,280 --> 00:47:58,510 Mutta varmista, että ymmärrät sen eikä vain ulkoa se 868 00:47:58,510 --> 00:47:59,760 tai kopioimalla sen alas. 869 00:47:59,760 --> 00:48:02,870 870 00:48:02,870 --> 00:48:06,340 >> Yleisö: Ja täysin pätevä ongelma tentti olisi 871 00:48:06,340 --> 00:48:07,990 jotain tässä lista. 872 00:48:07,990 --> 00:48:12,100 Mitä tämä lista näyttää jälkeen yksi askel valintojen lajitella tai 873 00:48:12,100 --> 00:48:13,330 lisäyslajittelun tai mitä tahansa. 874 00:48:13,330 --> 00:48:14,940 Yksi täysi iterointia luettelon. 875 00:48:14,940 --> 00:48:18,530 Joten vaikka et päädy tarvitse koodia, sinun täytyy ymmärtää se 876 00:48:18,530 --> 00:48:20,440 riitä, että tietää miten se menee voidaan muuttamiseksi array. 877 00:48:20,440 --> 00:48:24,144 878 00:48:24,144 --> 00:48:25,394 >> DAN: Siinä se minulle. 879 00:48:25,394 --> 00:48:30,604 880 00:48:30,604 --> 00:48:32,588 >> [APPLAUSE] 881 00:48:32,588 --> 00:49:06,316 882 00:49:06,316 --> 00:49:07,410 >> LUCAS: Hei kaikki. 883 00:49:07,410 --> 00:49:08,390 Nimeni on Lucas. 884 00:49:08,390 --> 00:49:16,840 Aion puhua rekursio, kaikki lajittelee, että olemme oppineet, ja 885 00:49:16,840 --> 00:49:18,050 vähän kaikkien viitteitä. 886 00:49:18,050 --> 00:49:18,740 OK? 887 00:49:18,740 --> 00:49:20,340 Joten ensinnäkin, rekursio. 888 00:49:20,340 --> 00:49:22,951 Mitä se tarkoittaa sanoa, että funktio on rekursiivinen? 889 00:49:22,951 --> 00:49:24,675 >> Yleisö: kutsuu itseään. 890 00:49:24,675 --> 00:49:26,500 >> LUCAS: OK, kutsuu itseään, joo. 891 00:49:26,500 --> 00:49:27,700 Niin kuin tässä kuvassa, esimerkiksi. 892 00:49:27,700 --> 00:49:30,280 Se on kuin kuva sisältä Kuvan ja niin edelleen. 893 00:49:30,280 --> 00:49:35,740 Niinpä esimerkiksi, voit have-- Dan että puhui binäärihakupuu. 894 00:49:35,740 --> 00:49:41,840 Yksi tapa, jolla Binäärihaku on rekursiivinen on se, että olet 895 00:49:41,840 --> 00:49:43,130 yrittää löytää numero. 896 00:49:43,130 --> 00:49:44,250 Niin menet keskelle. 897 00:49:44,250 --> 00:49:47,130 Ja sitten tarkistaa, jos numerot on vasemmassa ja oikeassa. 898 00:49:47,130 --> 00:49:49,650 >> Ja sitten jos saat selville numero on olemaan vasemmalla, se on sama 899 00:49:49,650 --> 00:49:53,340 asia kuin teet haun uudelleen, mutta vain vasemmalla luettelosta. 900 00:49:53,340 --> 00:49:57,350 Niin, että miten se kuulostaa kuin se on rekursiivinen. 901 00:49:57,350 --> 00:50:01,870 Joten siksi teillä rekursiivinen ratkaisu yhdistää tavallaan. 902 00:50:01,870 --> 00:50:04,270 >> OK, joten tässä on esimerkki. 903 00:50:04,270 --> 00:50:07,280 Niin sanotaan, että haluan valita kaikki numerot 1: stä n. 904 00:50:07,280 --> 00:50:13,790 En voi ymmärtää, että summa n lukumäärä on n plus n miinus 1 asti 1. 905 00:50:13,790 --> 00:50:17,810 Mutta sitten, jos katson n miinus 1 plus n miinus 2 plus 1, joka on sama 906 00:50:17,810 --> 00:50:20,680 asia kuin yhteen numerot enintään n miinus 1. 907 00:50:20,680 --> 00:50:25,890 Voin siis sanoa summaa vastaavalla summalla on yhtä suuri kuin n sekä n: n miinus 1. 908 00:50:25,890 --> 00:50:28,010 Onko järkeä? 909 00:50:28,010 --> 00:50:32,630 >> Ja minäkin olisi jotain muuta nimeltään pohja tapauksessa on, että 910 00:50:32,630 --> 00:50:37,440 lukujen summa ylös nollaan olisi nolla. 911 00:50:37,440 --> 00:50:42,770 Niin pian kuin pääsen numero nolla, minä lopettaa laskemisen. 912 00:50:42,770 --> 00:50:45,330 Onko järkeä? 913 00:50:45,330 --> 00:50:48,120 >> Joten tässä on esimerkki siitä, miten Voin toteuttaa sen. 914 00:50:48,120 --> 00:50:49,860 Joten minulla on tämä toiminto joissakin. 915 00:50:49,860 --> 00:50:51,700 Se vie kokonaisluku n. 916 00:50:51,700 --> 00:50:56,300 Joten tässä minä ensin tarkistaa, jos n on vähemmän tai yhtä suuri kuin nolla. 917 00:50:56,300 --> 00:51:00,310 Joten jos se on vähemmän tai yhtä suuri kuin nolla, I palata nolla, mikä on meidän tukikohta tapauksessa. 918 00:51:00,310 --> 00:51:05,690 Muuten voin vain palata n plus summa numerot 919 00:51:05,690 --> 00:51:07,190 yksi n miinus yksi. 920 00:51:07,190 --> 00:51:09,360 Järkeä? 921 00:51:09,360 --> 00:51:10,100 OK. 922 00:51:10,100 --> 00:51:11,610 >> Joten tässä mitä se näyttää. 923 00:51:11,610 --> 00:51:15,260 Sinulla on summa 2 tasavertaisten 2 plus summa 1. 924 00:51:15,260 --> 00:51:18,930 Ja jotkut 1 on 1 plus summa on 0, joka on 0. 925 00:51:18,930 --> 00:51:20,216 Järkeä? 926 00:51:20,216 --> 00:51:25,342 Joten jos katsomme pino sinun ohjelma, tämä on sitä miltä näyttää. 927 00:51:25,342 --> 00:51:26,820 >> Ensinnäkin meillä on päätehtävä. 928 00:51:26,820 --> 00:51:30,320 Ja sitten päätehtävä nimeltään summa 2. 929 00:51:30,320 --> 00:51:36,690 Ja sitten summa 2 aikoo sanoa, oh, summa 2 = 2 plus summa yhden. 930 00:51:36,690 --> 00:51:39,460 Joten lisään summa 1 pinoon. 931 00:51:39,460 --> 00:51:43,860 Ja summa 1 on menossa soittaa summa 0, joka on myös menossa lisättävä 932 00:51:43,860 --> 00:51:44,630 pinoon. 933 00:51:44,630 --> 00:51:49,240 Ja sitten jokainen näistä ne, jotka ovat toisen päälle on palattava 934 00:51:49,240 --> 00:51:52,020 ennen muuta niitä voi pitää käynnissä. 935 00:51:52,020 --> 00:51:56,240 >> Niinpä esimerkiksi tässä, summa 0, Ensimmäinen, aikoo palata 0. 936 00:51:56,240 --> 00:51:58,320 Ja valitse summa 1. 937 00:51:58,320 --> 00:52:00,850 Sitten summa 1 on menossa palaa 1 summa 2. 938 00:52:00,850 --> 00:52:03,900 Ja lopuksi, summa 2 on menossa palata 3 to main. 939 00:52:03,900 --> 00:52:05,320 Onko järkeä? 940 00:52:05,320 --> 00:52:09,496 >> On todella tärkeää ymmärtää, miten pino toimii ja yrittää 941 00:52:09,496 --> 00:52:11,980 onko se järkevää. 942 00:52:11,980 --> 00:52:13,260 OK, joten lajittelu. 943 00:52:13,260 --> 00:52:16,170 Joten miksi lajittelu tärkeää, ensinnäkin? 944 00:52:16,170 --> 00:52:18,260 Miksi meidän pitäisi välittää? 945 00:52:18,260 --> 00:52:20,310 Kukaan? 946 00:52:20,310 --> 00:52:20,695 Anna minulle esimerkki? 947 00:52:20,695 --> 00:52:21,040 Joo? 948 00:52:21,040 --> 00:52:22,968 >> Yleisö: [kuulumaton]. 949 00:52:22,968 --> 00:52:24,700 >> LUCAS: Joo, OK. 950 00:52:24,700 --> 00:52:26,090 Niin voit etsiä tehokkaammin. 951 00:52:26,090 --> 00:52:28,580 Se on hyvä tapa. 952 00:52:28,580 --> 00:52:32,462 Niinpä esimerkiksi, meillä on paljon asioita, todella, elämässämme, että 953 00:52:32,462 --> 00:52:32,920 lajitellaan. 954 00:52:32,920 --> 00:52:34,830 Esimerkiksi sanakirjoja. 955 00:52:34,830 --> 00:52:39,210 >> On erittäin tärkeää saada kaikki sanat jonkinlainen jotta voimme 956 00:52:39,210 --> 00:52:41,970 voi käyttää helposti. 957 00:52:41,970 --> 00:52:43,280 Niin, että mitä hän sanoi. 958 00:52:43,280 --> 00:52:45,530 Voit etsiä tehokkaammin. 959 00:52:45,530 --> 00:52:48,740 Ajattele kuinka vaikeaa olisi, sanakirja, jossa sanat ovat 960 00:52:48,740 --> 00:52:49,500 satunnaisessa järjestyksessä. 961 00:52:49,500 --> 00:52:53,120 Sinun täytyy katsoa, ​​melko paljon, jokaisesta sanasta, kunnes löydät 962 00:52:53,120 --> 00:52:54,720 Sana, joka etsit. 963 00:52:54,720 --> 00:52:58,710 >> Jos käytät Facebook myös, kun etsit ystävillesi, olet 964 00:52:58,710 --> 00:53:03,540 tulette näkemään, että Facebook laittaa lähempänä kaverin päälle niistä 965 00:53:03,540 --> 00:53:05,470 että et puhu niin paljon. 966 00:53:05,470 --> 00:53:08,080 Jos menet aina pohjaan kaverilistallasi, olet menossa nähdä 967 00:53:08,080 --> 00:53:11,250 ihmiset että et todennäköisesti ole edes Muista, että olet ystävien kanssa. 968 00:53:11,250 --> 00:53:14,590 Ja se johtuu Facebook lajittelee ystäväsi mukaan, miten 969 00:53:14,590 --> 00:53:16,472 sulje olet heille. 970 00:53:16,472 --> 00:53:17,930 >> Niin järjestää tietoja. 971 00:53:17,930 --> 00:53:18,450 Myös Pokemon. 972 00:53:18,450 --> 00:53:21,400 Niin näet, että kaikki Pokemons ovat numeroita. 973 00:53:21,400 --> 00:53:27,210 Ja se on kuin helppo tapa käyttää dataa. 974 00:53:27,210 --> 00:53:29,050 >> Yleisö: Pääsy Pokemon. 975 00:53:29,050 --> 00:53:29,890 >> LUCAS: Joo. 976 00:53:29,890 --> 00:53:32,395 >> Yleisö: [kuulumaton]. 977 00:53:32,395 --> 00:53:33,460 >> LUCAS: Jep. 978 00:53:33,460 --> 00:53:35,140 OK, joten valinnan tavallaan. 979 00:53:35,140 --> 00:53:41,610 Valinta tavallaan tulee valita pienin lajittelemattomat arvo luettelon kussakin 980 00:53:41,610 --> 00:53:43,300 kerran jokaisen iteraation. 981 00:53:43,300 --> 00:53:46,800 Se on ikään kuin eräänlainen että teet päässäsi, kun yrität 982 00:53:46,800 --> 00:53:48,430 lajitella listan käsillä. 983 00:53:48,430 --> 00:53:51,990 >> Periaatteessa sinun tarvitsee vain näytät että pienin luku. 984 00:53:51,990 --> 00:53:54,280 Laitat sen lajitellun luettelon. 985 00:53:54,280 --> 00:53:56,230 Ja sitten etsiä seuraavaksi pienin numero. 986 00:53:56,230 --> 00:54:00,080 Ja sitten sinun pitää tehdä , että ja niin edelleen. 987 00:54:00,080 --> 00:54:04,600 >> Joten valinta tavallaan on pohjimmiltaan sinua valitse aina pienin 988 00:54:04,600 --> 00:54:05,750 lajittelemattomat arvo. 989 00:54:05,750 --> 00:54:10,840 Laita lopussa lajiteltu osa luettelosta. 990 00:54:10,840 --> 00:54:12,370 Ja pitää näin. 991 00:54:12,370 --> 00:54:15,890 Joten nopeasti mitä tämä näyttää. 992 00:54:15,890 --> 00:54:19,340 Joten tässä on lajiteltu ja lajittelemattomat lista. 993 00:54:19,340 --> 00:54:23,350 >> Joten lajitella luettelon, se on aluksi tyhjä. 994 00:54:23,350 --> 00:54:26,760 Ja sitten aion valita Pienin luku täällä, joka on 2. 995 00:54:26,760 --> 00:54:30,650 Niin saan numero 2 ja laitoin edessä luettelosta. 996 00:54:30,650 --> 00:54:34,910 Ja sitten odotan seuraavaksi pienin -elementti, joka on 3. 997 00:54:34,910 --> 00:54:37,050 Joten laitoin sen lopussa on järjestetty luettelo. 998 00:54:37,050 --> 00:54:38,140 Ja sitten pitää tehdä, että. 999 00:54:38,140 --> 00:54:40,040 Minusta 4 ja laita se lopussa. 1000 00:54:40,040 --> 00:54:41,360 Etsi 5 ja laita se lopussa. 1001 00:54:41,360 --> 00:54:44,830 >> Ja katsokaa miten kaikki niistä hetkistä, jotka Sanon laita se lopussa on, 1002 00:54:44,830 --> 00:54:46,850 pohjimmiltaan, vaihtamalla kaksi arvoa. 1003 00:54:46,850 --> 00:54:48,100 OK? 1004 00:54:48,100 --> 00:54:50,140 1005 00:54:50,140 --> 00:54:52,825 Ja sitten viimeinen, juuri on yksi elementti. 1006 00:54:52,825 --> 00:54:55,870 Niin se on jo järjestetty. 1007 00:54:55,870 --> 00:54:57,800 >> OK, joten lisäyslajittelun. 1008 00:54:57,800 --> 00:55:03,180 Lisäyslajittelun olet menossa on myös että asia ottaa lajitellaan ja 1009 00:55:03,180 --> 00:55:04,690 lajittelemattomat lista. 1010 00:55:04,690 --> 00:55:14,540 Ainoa asia on, että joka kerta, lisäät elementti lajiteltu 1011 00:55:14,540 --> 00:55:18,170 luettelossa, voit vain poimia elementti, joka on edessä lajittelemattoman luettelon. 1012 00:55:18,170 --> 00:55:20,880 Ja sitten aiot löytää mitä asennossa se olisi lajitellut 1013 00:55:20,880 --> 00:55:22,300 osa luettelosta. 1014 00:55:22,300 --> 00:55:25,840 >> Katsotaan, mitä tämä on niin Tämän järkevämpää. 1015 00:55:25,840 --> 00:55:29,360 Joten aluksi, esimerkiksi Yritän lisätä numeron kolme 1016 00:55:29,360 --> 00:55:30,680 lajitellut osan luettelosta. 1017 00:55:30,680 --> 00:55:31,800 Joten lista ei ole mitään. 1018 00:55:31,800 --> 00:55:34,160 Joten voin vain laittaa numero 3. 1019 00:55:34,160 --> 00:55:37,480 >> Nyt haluan lisätä numeron 5 lajitellut osan luetteloon. 1020 00:55:37,480 --> 00:55:38,900 Joten katson numero 5. 1021 00:55:38,900 --> 00:55:40,450 Olen huomannut, että se on suurempi kuin 3. 1022 00:55:40,450 --> 00:55:41,980 Tiedän siis, että sen on oltava jälkeen 3. 1023 00:55:41,980 --> 00:55:44,100 Joten laitoin 3 ja 5. 1024 00:55:44,100 --> 00:55:45,940 >> Sitten haluan lisätä numero 2. 1025 00:55:45,940 --> 00:55:51,630 Olen huomannut, että numero 2 on oikeastaan kestää molemmat 3 ja 5. 1026 00:55:51,630 --> 00:55:54,580 Joten en oikeastaan ​​tarvitse laittaa kaiken tavalla listan alkuun. 1027 00:55:54,580 --> 00:55:59,030 Joten minun on, tavallaan, siirtää kaikki elementtejä lajiteltu lista niin voin 1028 00:55:59,030 --> 00:56:01,970 tehdä tilaa numero 2. 1029 00:56:01,970 --> 00:56:03,160 >> Sitten näen numero 6. 1030 00:56:03,160 --> 00:56:05,450 Näen, että se tulee tehdä 5. 1031 00:56:05,450 --> 00:56:06,240 Joten laitoin sen sinne. 1032 00:56:06,240 --> 00:56:07,965 Ja lopuksi, katson numero 4. 1033 00:56:07,965 --> 00:56:11,030 Ja huomaan sen pitäisi olla välillä 3 ja 5. 1034 00:56:11,030 --> 00:56:14,870 Ja sitten laitoin sen sinne ja muutos kaikki muut elementit. 1035 00:56:14,870 --> 00:56:16,120 Järkeä? 1036 00:56:16,120 --> 00:56:17,880 1037 00:56:17,880 --> 00:56:19,150 >> Kupla Lajittele. 1038 00:56:19,150 --> 00:56:25,730 Joten kupla lajitella on pohjimmiltaan mitä olet menossa do-- kutsumme kupla 1039 00:56:25,730 --> 00:56:30,113 lajitella koska käyt läpi list-- se on oikeastaan ​​parempi, jos vain näyttää 1040 00:56:30,113 --> 00:56:32,300 pidät this-- 1041 00:56:32,300 --> 00:56:35,030 ja aiot vertailla vierekkäiset numerot. 1042 00:56:35,030 --> 00:56:38,410 Ja aiot vaihtaa niiden asemia, jos ne eivät ole 1043 00:56:38,410 --> 00:56:39,190 oikeassa järjestyksessä. 1044 00:56:39,190 --> 00:56:42,570 >> Joten periaatteessa, mitä tulee tapahtua on täällä, esimerkiksi 1045 00:56:42,570 --> 00:56:44,160 sinulla on 8 ja 6. 1046 00:56:44,160 --> 00:56:47,270 Tiedät, että lajitellut tilaus todella olla 6 ja 5, eikö? 1047 00:56:47,270 --> 00:56:49,540 Joten aiot vaihtaa tilauksia. 1048 00:56:49,540 --> 00:56:51,370 Sitten näen 8 ja 4 täällä. 1049 00:56:51,370 --> 00:56:52,250 Ja minä tehdä sama asia. 1050 00:56:52,250 --> 00:56:53,400 Olen vaihtaa taas. 1051 00:56:53,400 --> 00:56:55,070 Ja lopuksi, 2 ja 8. 1052 00:56:55,070 --> 00:56:56,670 Olen myös vaihtaa niitä. 1053 00:56:56,670 --> 00:57:01,690 >> Sitä kutsutaan Bubble Järjestä koska sen jälkeen kukin näistä toistojen, itse asiassa, 1054 00:57:01,690 --> 00:57:05,910 eniten listassa saa kaikki tapa luettelon loppuun. 1055 00:57:05,910 --> 00:57:06,940 Onko järkeä? 1056 00:57:06,940 --> 00:57:11,880 Koska se pitää vaihtamalla se ja siirtämällä sitä oikealle. 1057 00:57:11,880 --> 00:57:14,440 >> OK, joten tämä on toisen iteroinnin. 1058 00:57:14,440 --> 00:57:17,200 Se olisi sama asia. 1059 00:57:17,200 --> 00:57:20,190 Teen yhden swap ja sitten viimeinen. 1060 00:57:20,190 --> 00:57:23,290 Olen, että ei ole olemassa swap ja luettelo on järjestetty. 1061 00:57:23,290 --> 00:57:27,460 Joten Bubble Lajittele, olemme periaatteessa pitää läpi listan ja vaihtamalla 1062 00:57:27,460 --> 00:57:32,310 asioita, kunnes huomaan, että en ole tehnyt kaikki swap tee sitä iteraatio, joka 1063 00:57:32,310 --> 00:57:34,270 tarkoittaa, että lista on jo järjestetty. 1064 00:57:34,270 --> 00:57:35,520 Järkeä? 1065 00:57:35,520 --> 00:57:38,400 1066 00:57:38,400 --> 00:57:40,870 >> Puhutaanpa hieman noin käyntiaika. 1067 00:57:40,870 --> 00:57:45,165 Joten te kaverit muistaa Big O, Omega, ja Theta? 1068 00:57:45,165 --> 00:57:49,290 1069 00:57:49,290 --> 00:57:50,990 Joo? 1070 00:57:50,990 --> 00:57:53,070 OK, mikä on Big O ensinnäkin? 1071 00:57:53,070 --> 00:57:54,315 >> Yleisö: [kuulumaton]. 1072 00:57:54,315 --> 00:57:59,070 >> LUCAS: Joo, sitä kutsutaan pahimmassa tapauksessa runtime, mikä tarkoittaa vain sitä, että se on 1073 00:57:59,070 --> 00:58:03,470 kuinka paljon oletat ohjelman ottaa juosta. 1074 00:58:03,470 --> 00:58:04,910 Kuten, mitä of-- 1075 00:58:04,910 --> 00:58:06,660 Tässä case-- n. 1076 00:58:06,660 --> 00:58:09,150 Elementtien määrä luettelo pahimmassa tapauksessa. 1077 00:58:09,150 --> 00:58:12,520 Kuten, että pahin mahdollinen tapaus. 1078 00:58:12,520 --> 00:58:17,100 >> Joten Bubble Lajittele, esimerkiksi meillä on Big O n neliö. 1079 00:58:17,100 --> 00:58:20,580 Miksi meillä on niin? 1080 00:58:20,580 --> 00:58:24,716 Miksi Bubble Järjestä Big O n neliö? 1081 00:58:24,716 --> 00:58:27,614 >> Yleisö: [kuulumaton]. 1082 00:58:27,614 --> 00:58:35,670 >> LUCAS: Joo, niin pahimmassa tapauksessa tulee että minun täytyy tehdä n toistojen. 1083 00:58:35,670 --> 00:58:39,260 Näin ollen jokainen toistojen on menossa tuo suurin alkio loppuun 1084 00:58:39,260 --> 00:58:40,290 luettelon. 1085 00:58:40,290 --> 00:58:44,230 Joten pahimmassa tapauksessa on se, että minulla on sitäkään n kertaa. 1086 00:58:44,230 --> 00:58:48,550 Ja jokaisesta niistä hetkistä, joudun do n swap koska minun täytyy verrata 1087 00:58:48,550 --> 00:58:49,870 kukin kaksi elementtiä. 1088 00:58:49,870 --> 00:58:53,730 Joten siksi se on n potenssiin koska se on n kertaa n. 1089 00:58:53,730 --> 00:59:00,120 >> Sitten valinta tavallaan on myös n neliö koska jokaisen iteraation, joudun 1090 00:59:00,120 --> 00:59:02,650 tarkastellaan jokaisen elementin luettelossa. 1091 00:59:02,650 --> 00:59:04,980 Ja sitten löytää pienin, mikä tarkoittaa, että minun täytyy 1092 00:59:04,980 --> 00:59:06,130 katsoa läpi n elementtejä. 1093 00:59:06,130 --> 00:59:11,750 Ja minun täytyy tehdä, että n kertaa, koska Minun täytyy valita kaikki n elementtiä. 1094 00:59:11,750 --> 00:59:18,273 >> Lisäyslajittelun on myös n neliö koska pahimmassa tapauksessa tulee 1095 00:59:18,273 --> 00:59:20,950 olla yksi, minun täytyy lisätä n numeroita, eikö? 1096 00:59:20,950 --> 00:59:22,765 Joten tiedän jo, että aion olla n toistojen. 1097 00:59:22,765 --> 00:59:25,466 1098 00:59:25,466 --> 00:59:29,840 Mutta jokainen näistä numeroita, jos olisin katsomaan kaikki numerot 1099 00:59:29,840 --> 00:59:34,380 lajiteltu lista ja laittaa se kokonaan edessä, joka on n neliö 1100 00:59:34,380 --> 00:59:36,230 koska se on n kertaa n uudelleen. 1101 00:59:36,230 --> 00:59:38,280 Järkeä? 1102 00:59:38,280 --> 00:59:41,512 Entä omega? 1103 00:59:41,512 --> 00:59:42,886 >> Yleisö: [kuulumaton]. 1104 00:59:42,886 --> 00:59:44,620 >> LUCAS: Se on parhaassa tapauksessa. 1105 00:59:44,620 --> 00:59:48,810 Niin se on, ja paljon kertaa, lajittelu, parhaassa tapauksessa on 1106 00:59:48,810 --> 00:59:50,660 kun lista on jo järjestetty. 1107 00:59:50,660 --> 00:59:52,670 Joten et todellakaan ole tehdä mitään. 1108 00:59:52,670 --> 00:59:56,290 Kupla Lajittele on paras skenaario on n. 1109 00:59:56,290 --> 00:59:58,820 Tiedättekö miksi? 1110 00:59:58,820 --> 01:00:00,620 >> Yleisö: [kuulumaton]. 1111 01:00:00,620 --> 01:00:05,640 >> LUCAS: Joo, jos pidät kirjaa onko tietoa annoksesta ollut swap tai 1112 01:00:05,640 --> 01:00:10,533 ei, jos sinulla on jotain asetettu totta, jos oli iteraatio, jos 1113 01:00:10,533 --> 01:00:15,140 Lista on jo järjestetty, pohjimmiltaan, mitä tulee tapahtumaan on Aion 1114 01:00:15,140 --> 01:00:17,890 kokeile vaihtaa paria vierekkäisten elementtien. 1115 01:00:17,890 --> 01:00:19,920 Aion nähdä, että ei ole swap. 1116 01:00:19,920 --> 01:00:21,230 Ja minä vain palata heti. 1117 01:00:21,230 --> 01:00:24,240 >> Niin se tarkoittaa, että minun oli pakko käydä listan läpi kerran. 1118 01:00:24,240 --> 01:00:28,990 Joten se on n, koska odotan kello n elementtejä. 1119 01:00:28,990 --> 01:00:30,930 Miksi valinta järjestä n neliö? 1120 01:00:30,930 --> 01:00:35,150 1121 01:00:35,150 --> 01:00:45,520 >> Joo, vaikka luettelo on järjestetty muun jokaisen iteraation valinta lajitella, minä 1122 01:00:45,520 --> 01:00:47,590 on valittava pienin alkio. 1123 01:00:47,590 --> 01:00:49,980 Niin se tarkoittaa, että minun täytyy ulos etsimään lainkaan elementtejä lajittelemattoman 1124 01:00:49,980 --> 01:00:53,350 luetella ja löytää pienin jokaisen iteraation. 1125 01:00:53,350 --> 01:00:54,600 Onko järkeä? 1126 01:00:54,600 --> 01:00:56,880 1127 01:00:56,880 --> 01:01:04,690 >> Ja lisäys miekka on N, koska tapauksessa, että yritän lisätä 1128 01:01:04,690 --> 01:01:09,320 numerot ja kaikki numerot, kun yrittää lisätä niitä, näen että he 1129 01:01:09,320 --> 01:01:10,510 ovat oikeassa asennossa. 1130 01:01:10,510 --> 01:01:15,120 Minun ei tarvitse mennä tarkistaa kaikki muut numerot lajittelemattoman luetteloon. 1131 01:01:15,120 --> 01:01:17,170 Joten siksi se on n. 1132 01:01:17,170 --> 01:01:19,480 Järkeä? 1133 01:01:19,480 --> 01:01:21,035 Ja mikä on theta? 1134 01:01:21,035 --> 01:01:23,410 >> Yleisö: [kuulumaton]. 1135 01:01:23,410 --> 01:01:24,380 >> LUCAS: Mitä, anteeksi? 1136 01:01:24,380 --> 01:01:24,960 Sano se uudestaan. 1137 01:01:24,960 --> 01:01:25,666 >> Yleisö: [kuulumaton]. 1138 01:01:25,666 --> 01:01:26,490 >> LUCAS: Aivan. 1139 01:01:26,490 --> 01:01:31,280 Voit siis nähdä, että vain valinta tallennettu Merge sort on thetas. 1140 01:01:31,280 --> 01:01:39,920 Ja se johtuu siitä, sinulla on vain theta jos molemmat Big O ja Omega ovat samat. 1141 01:01:39,920 --> 01:01:41,520 OK. 1142 01:01:41,520 --> 01:01:44,210 Ja lopuksi, yhdistää lajitella IS log n. 1143 01:01:44,210 --> 01:01:48,910 >> Ja sitten, kun Dan sanoi, Merge sort on ikään kuin samalla tavalla kuin 1144 01:01:48,910 --> 01:01:50,320 teet binäärihakupuu. 1145 01:01:50,320 --> 01:01:53,530 Niin saat listan. 1146 01:01:53,530 --> 01:01:55,170 Ja aiot leikata kahtia. 1147 01:01:55,170 --> 01:02:00,580 Ja sitten leikkaa ne pienemmissä puolikkaat. 1148 01:02:00,580 --> 01:02:01,730 Ja sitten yhdistää ne. 1149 01:02:01,730 --> 01:02:02,960 Te muistaa, että oikea? 1150 01:02:02,960 --> 01:02:04,960 OK, kuten hän sanoi. 1151 01:02:04,960 --> 01:02:08,330 >> OK, osoittimet. 1152 01:02:08,330 --> 01:02:11,078 Joten mikä on osoitin? 1153 01:02:11,078 --> 01:02:12,050 >> Yleisö: [kuulumaton]. 1154 01:02:12,050 --> 01:02:12,820 >> Lucas osoite. 1155 01:02:12,820 --> 01:02:13,720 OK. 1156 01:02:13,720 --> 01:02:18,530 Tiedän, että David näyttää kasan videoita Binky ja asioita osoittaen 1157 01:02:18,530 --> 01:02:19,080 toisiaan. 1158 01:02:19,080 --> 01:02:22,960 Mutta haluan ajatella viitteitä pelkästään osoitetta. 1159 01:02:22,960 --> 01:02:26,110 Joten se muuttuja, joka on menossa tallentaa osoitteesi. 1160 01:02:26,110 --> 01:02:31,940 >> Niin se on juuri tämä erityinen muuttuja että on neljä tavua pitkä. 1161 01:02:31,940 --> 01:02:36,550 Muista, että osoitin jotain on aina neljän tavun pituisia meidän 32-bittinen 1162 01:02:36,550 --> 01:02:39,370 konetta niin, että tapauksessa, jossa laite. 1163 01:02:39,370 --> 01:02:41,920 1164 01:02:41,920 --> 01:02:47,050 Ja se vain on paikalla muuttujan sisälle. 1165 01:02:47,050 --> 01:02:50,240 >> OK, joten ei tämä muisti, periaatteessa. 1166 01:02:50,240 --> 01:02:57,420 Joten jokaisen lohkon muisti todella on merkki, joka on osoite 1167 01:02:57,420 --> 01:02:58,890 slotty muistia. 1168 01:02:58,890 --> 01:03:02,370 Niin se tarkoittaa, että voin olla osoitin osoittaa 1169 01:03:02,370 --> 01:03:03,380 Minkä tahansa näistä osoitteista. 1170 01:03:03,380 --> 01:03:09,930 Joten miksi käytämme viitteitä on jos minun täytyy muistaa sijainnin 1171 01:03:09,930 --> 01:03:12,300 että tietty muuttuja on muisti. 1172 01:03:12,300 --> 01:03:16,560 >> Ja te muistaa, että yksi niistä tapauksia oli jos minulla on funktio 1173 01:03:16,560 --> 01:03:20,820 jos olen todella haluavat sinun swap reals, olen itse 1174 01:03:20,820 --> 01:03:22,110 täytyy lähettää osoittimen. 1175 01:03:22,110 --> 01:03:23,460 Ei muuttuja. 1176 01:03:23,460 --> 01:03:25,200 Onko teillä muistaa, että? 1177 01:03:25,200 --> 01:03:26,450 Ero between-- 1178 01:03:26,450 --> 01:03:33,350 1179 01:03:33,350 --> 01:03:34,120 mikä on nimi? 1180 01:03:34,120 --> 01:03:36,010 Soittaminen arvo ja soittamalla viittaamalla, eikö? 1181 01:03:36,010 --> 01:03:36,840 >> OK, joo. 1182 01:03:36,840 --> 01:03:38,330 Niin soita arvosta. 1183 01:03:38,330 --> 01:03:43,570 Kun vain lähettää muuttujan toimiakseen olet vain lähettämällä arvoa. 1184 01:03:43,570 --> 01:03:45,610 Niin olet todella lähettävät kopio muuttujan. 1185 01:03:45,610 --> 01:03:49,720 Ja ohjelma voisi vähempää noin jos sama muuttuja todella 1186 01:03:49,720 --> 01:03:51,650 tekee kopion. 1187 01:03:51,650 --> 01:03:56,330 >> Ja soittaa tarkoittaa sitä, että Olen oikeastaan ​​lähettämällä jäljennös 1188 01:03:56,330 --> 01:03:57,550 osoitin, että muuttuja. 1189 01:03:57,550 --> 01:04:00,970 Niin se tarkoittaa, että olen lähettäminen sijainnin että muuttuja. 1190 01:04:00,970 --> 01:04:04,440 Joten tilannetta olen sijainti muuttuja, kun soitan toiminto 1191 01:04:04,440 --> 01:04:09,700 osoittimet, olen voinut todella vaihtaa tietoja, jotka oli tärkein. 1192 01:04:09,700 --> 01:04:12,050 Järkeä? 1193 01:04:12,050 --> 01:04:17,560 >> Vaikka osoitin on kopio, osoitin on edelleen todellinen osoite 1194 01:04:17,560 --> 01:04:20,090 muuttuja että haluan muuttaa. 1195 01:04:20,090 --> 01:04:21,920 Järkeä? 1196 01:04:21,920 --> 01:04:24,290 >> Joten luoda viitteitä. 1197 01:04:24,290 --> 01:04:28,410 Muista, osoitin aina tyyppi, että se on suunnattu 1198 01:04:28,410 --> 01:04:29,890 ja sitten tähti. 1199 01:04:29,890 --> 01:04:31,030 Ja sitten laitat nimen. 1200 01:04:31,030 --> 01:04:35,765 Niin muista, että aina kun sinulla on mitä tähti, se on kuin osoitin 1201 01:04:35,765 --> 01:04:38,990 että mitä tahansa muuttujan kirjoita että sinulla oli. 1202 01:04:38,990 --> 01:04:42,850 >> Joten täällä tähden, esimerkiksi, se on osoittimen ja kokonaisluku. 1203 01:04:42,850 --> 01:04:47,680 Ja sitten nieriää tähti on osoitin nieriää tähti ja niin edelleen. 1204 01:04:47,680 --> 01:04:47,960 Joo? 1205 01:04:47,960 --> 01:04:52,710 >> Yleisö: Mitä jos meillä osoitin n tähti x. 1206 01:04:52,710 --> 01:04:55,255 Tiedän, että luodaan osoitin x. 1207 01:04:55,255 --> 01:04:59,432 Se myös julistaa x kokonaisluku? 1208 01:04:59,432 --> 01:05:05,170 >> LUCAS: OK, joten kun sanot n tähti x, et ole luomassa osoitin 1209 01:05:05,170 --> 01:05:06,000 muuttuja x. 1210 01:05:06,000 --> 01:05:08,170 Luot osoitin nimeltä x. 1211 01:05:08,170 --> 01:05:09,396 >> Yleisö: [kuulumaton]. 1212 01:05:09,396 --> 01:05:14,250 >> LUCAS: Eli kun sanon n tähti x, olen sanomalla, hei, muistin, aion 1213 01:05:14,250 --> 01:05:16,390 saada yksi näistä kolme laatikkoa. 1214 01:05:16,390 --> 01:05:20,750 Ja aion sanoa, että tulee olemaan x, joka on 1215 01:05:20,750 --> 01:05:22,000 olemaan osoitin. 1216 01:05:22,000 --> 01:05:26,860 1217 01:05:26,860 --> 01:05:30,640 Ja jotain mielenkiintoista osoittimet on, että sanomme, että heillä on 1218 01:05:30,640 --> 01:05:32,620 4 tavua 32-bittinen kone. 1219 01:05:32,620 --> 01:05:36,320 Ja syy siihen on, koska 4 tavua ovat 32-bittiä. 1220 01:05:36,320 --> 01:05:40,490 >> Ja koneita, jotka ovat 64 bittiä todella on viitteitä osoitteet 1221 01:05:40,490 --> 01:05:43,480 , jotka ovat 64 bittiä pitkä. 1222 01:05:43,480 --> 01:05:49,820 Niin se tarkoittaa vain sitä, että koko osoitteet kone on erilainen. 1223 01:05:49,820 --> 01:05:52,270 >> Joten viittaaminen ja Dereferencing. 1224 01:05:52,270 --> 01:05:54,310 On olemassa kaksi operaattoria, jotka Teidän pitäisi muistaa. 1225 01:05:54,310 --> 01:05:55,450 Ensimmäinen on et-merkki. 1226 01:05:55,450 --> 01:05:56,810 Toinen on tähti. 1227 01:05:56,810 --> 01:06:05,060 Älä hämmentyä tämän tähden ja tämä tähden, koska muistaa, että 1228 01:06:05,060 --> 01:06:06,950 Tässä tapauksessa sinun on n tähden. 1229 01:06:06,950 --> 01:06:08,700 >> Se on kuin koko juttu yhdessä. 1230 01:06:08,700 --> 01:06:10,720 Ei ole n tila tähti. 1231 01:06:10,720 --> 01:06:12,070 Niin se tarkoittaa, että se tyyppi. 1232 01:06:12,070 --> 01:06:14,870 Muista, että kun olet muuttuva tähti, olet 1233 01:06:14,870 --> 01:06:16,230 puhumme tyyppi. 1234 01:06:16,230 --> 01:06:20,540 >> Kun sinulla on vain tähti ja sitten muuttujan nimi, se tarkoittaa, että 1235 01:06:20,540 --> 01:06:24,100 olet dereferencing osoitin, joka tarkoittaa, että etsit 1236 01:06:24,100 --> 01:06:28,290 osoitin, löytää osoite on osoittaa, menossa kyseiseen osoitteeseen, 1237 01:06:28,290 --> 01:06:30,850 ja katsot aina sinulla on siellä. 1238 01:06:30,850 --> 01:06:34,310 Joten kerron oppilailleni, että kun on tähti, sinun pitäisi ajatella, että se on 1239 01:06:34,310 --> 01:06:36,850 lyhenne sisällöstä. 1240 01:06:36,850 --> 01:06:39,770 >> Joten jos sinulla on osoittimen ja te do tähti osoitin, se on 1241 01:06:39,770 --> 01:06:41,720 sisällöstä osoittimen. 1242 01:06:41,720 --> 01:06:44,580 Niin menet mitä se osoittaa ja tarkastella jatkuvasti sisältöä. 1243 01:06:44,580 --> 01:06:47,730 Ja et-merkki on sama asia kuin osoite. 1244 01:06:47,730 --> 01:06:52,560 >> Joten jos minulla on vaihteleva A-- kuten, katsotaanpa sanoa, että tein int vastaa 3-- 1245 01:06:52,560 --> 01:06:56,900 jos haluan löytää osoitteen, joka muuttuja muisti, voin vain tehdä 1246 01:06:56,900 --> 01:06:58,240 et-merkki. 1247 01:06:58,240 --> 01:07:00,280 Joten se osoite. 1248 01:07:00,280 --> 01:07:01,530 Järkeä? 1249 01:07:01,530 --> 01:07:03,790 1250 01:07:03,790 --> 01:07:05,040 >> Joten tässä on esimerkki. 1251 01:07:05,040 --> 01:07:08,370 1252 01:07:08,370 --> 01:07:11,530 Tämä puuttuu int b ja int c. 1253 01:07:11,530 --> 01:07:16,520 Joten int vastaa 3 tarkoittaa, että Aion mennä muistiin. 1254 01:07:16,520 --> 01:07:19,870 Ja aion löytää raon ja laita numero 3 täällä. 1255 01:07:19,870 --> 01:07:22,200 >> Ja sitten int b vastaa 4. 1256 01:07:22,200 --> 01:07:23,100 Aion tehdä saman. 1257 01:07:23,100 --> 01:07:25,840 Siirry muistiin ja laittaa numero 4 yksi kohdista. 1258 01:07:25,840 --> 01:07:27,100 Ja int vastaa 5. 1259 01:07:27,100 --> 01:07:29,740 Etsi toinen laatikko ja laittaa numero 5. 1260 01:07:29,740 --> 01:07:36,160 >> Joten mitä tämä linja teet? n tähden pa vastaa et-merkki. 1261 01:07:36,160 --> 01:07:37,800 Joten ensinnäkin, n tähden pa. 1262 01:07:37,800 --> 01:07:39,050 Mitä se tekee? 1263 01:07:39,050 --> 01:07:40,930 1264 01:07:40,930 --> 01:07:42,298 >> Yleisö: [kuulumaton]. 1265 01:07:42,298 --> 01:07:47,890 >> LUCAS: Joo, niin n tähden pa, ensimmäinen, julistaa osoitin nimeltään pa. 1266 01:07:47,890 --> 01:07:53,720 Ja sitten se määrittämällä arvo että osoitin on osoite. 1267 01:07:53,720 --> 01:07:55,790 Niin et-merkki. 1268 01:07:55,790 --> 01:07:58,510 Sitten, jos en tähti pb, mikä on tähti pb? 1269 01:07:58,510 --> 01:08:02,418 1270 01:08:02,418 --> 01:08:03,150 >> Anteeksi. 1271 01:08:03,150 --> 01:08:06,330 Tämä on myös kateissa. n tähti pb. 1272 01:08:06,330 --> 01:08:07,905 Tarkoitan tähti pc. 1273 01:08:07,905 --> 01:08:11,200 Olen niin pahoillani. 1274 01:08:11,200 --> 01:08:11,940 Se on sama asia. 1275 01:08:11,940 --> 01:08:16,408 Mutta nyt olen hyvä ar luodaan osoitin to b ja sitten osoitin c. 1276 01:08:16,408 --> 01:08:16,886 Joo? 1277 01:08:16,886 --> 01:08:18,136 >> Yleisö: [kuulumaton]? 1278 01:08:18,136 --> 01:08:25,490 1279 01:08:25,490 --> 01:08:26,670 >> LUCAS: Kyllä. 1280 01:08:26,670 --> 01:08:32,630 Joten jos menet muistia ja menet laatikko, joka on tunnuksen PA, 1281 01:08:32,630 --> 01:08:37,149 olet todella menossa katso osoite. 1282 01:08:37,149 --> 01:08:38,399 OK? 1283 01:08:38,399 --> 01:08:42,970 1284 01:08:42,970 --> 01:08:43,300 Joo? 1285 01:08:43,300 --> 01:08:45,605 >> Yleisö: [kuulumaton]? 1286 01:08:45,605 --> 01:08:49,260 >> LUCAS: Joo, osoitin on osoite. 1287 01:08:49,260 --> 01:08:50,120 Älä koskaan unohda sitä. 1288 01:08:50,120 --> 01:08:52,800 Se on kuin tärkein osa noin viitteitä. 1289 01:08:52,800 --> 01:08:56,180 On tallentamiseen ja osoite joitakin muuttuja. 1290 01:08:56,180 --> 01:08:56,890 Entä muuta? 1291 01:08:56,890 --> 01:08:58,370 Muita kysymyksiä? 1292 01:08:58,370 --> 01:08:59,189 OK. 1293 01:08:59,189 --> 01:09:00,399 >> Joten Osoittimet ja rakenteet. 1294 01:09:00,399 --> 01:09:08,189 Muista, että kun teen int array 3, pohjimmiltaan, mitä olen tekemässä on olen, jollaisia 1295 01:09:08,189 --> 01:09:12,779 on, todetessaan osoitin. 1296 01:09:12,779 --> 01:09:18,960 Joten valikoima on ikään kuin osoitin tiettyyn paikkaan muisti, johon minä 1297 01:09:18,960 --> 01:09:21,999 varattu kolme paikkaa kokonaislukuja. 1298 01:09:21,999 --> 01:09:23,430 Onko järkeä? 1299 01:09:23,430 --> 01:09:30,250 >> Joten kun en int array 3, mitä olen teet, pohjimmiltaan, luo kolme 1300 01:09:30,250 --> 01:09:31,479 lähtö muistiin. 1301 01:09:31,479 --> 01:09:33,899 Joten minä vain löytää kolme paikkaa muistiin. 1302 01:09:33,899 --> 01:09:38,810 Joten jos en sitten tähti array, se periaatteessa sitä sisältöä array, 1303 01:09:38,810 --> 01:09:46,180 eli en poistaa osoittimen, menen siihen paikkaan, että se osoittaa, 1304 01:09:46,180 --> 01:09:47,939 ja laitoin numero yksi. 1305 01:09:47,939 --> 01:09:53,729 >> Ja sitten, jos en tee tähti array plus 1, se on sama asia kuin teet array 1306 01:09:53,729 --> 01:09:59,690 kiinnikkeet yksi, mikä tarkoittaa vain menen paikka, että se on suunnattu. 1307 01:09:59,690 --> 01:10:03,000 Ja sitten plus 1 merkkeihin minua siirtymään yhden paikan. 1308 01:10:03,000 --> 01:10:06,510 Joten menen tässä asennossa, todella, ja laittaa numero kaksi. 1309 01:10:06,510 --> 01:10:10,900 >> Ja sitten lopuksi, kun en array plus 2, menen missä 1310 01:10:10,900 --> 01:10:11,825 valikoimaan on suunnattu. 1311 01:10:11,825 --> 01:10:14,690 Ja sitten siirtyä muistilohkoja. 1312 01:10:14,690 --> 01:10:16,240 Ja sitten laitoin numero kolme täällä. 1313 01:10:16,240 --> 01:10:16,600 Joo? 1314 01:10:16,600 --> 01:10:21,400 >> Yleisö: Eli tähti array on yksinkertaisesti sanoen ensimmäinen piste. 1315 01:10:21,400 --> 01:10:25,090 Ja voit lisätä 1, vain koska olemme vain todella 1316 01:10:25,090 --> 01:10:27,295 löytymistä että ensimmäinen osoite. 1317 01:10:27,295 --> 01:10:28,545 >> LUCAS: Joo. 1318 01:10:28,545 --> 01:10:32,720 1319 01:10:32,720 --> 01:10:36,020 Miksi esimerkiksi sanoa array 0, array 1, ja array 2? 1320 01:10:36,020 --> 01:10:38,970 1321 01:10:38,970 --> 01:10:42,790 Sanon, miksi teet 0, 1, 2, 3 sijasta 1, 2, 3? 1322 01:10:42,790 --> 01:10:46,550 Yksi syistä on, yksi, tietokone ohjelmoijat haluavat aloittaa 1323 01:10:46,550 --> 01:10:47,750 laskien 0. 1324 01:10:47,750 --> 01:10:52,370 Kaksi johtuu kun teet array 0, se on sama asia kuin teet array 1325 01:10:52,370 --> 01:10:56,330 plus 0, mikä tarkoittaa menen että kanta, enkä 1326 01:10:56,330 --> 01:10:59,320 ohita mitään muistilohkoja. 1327 01:10:59,320 --> 01:11:01,750 Joten en vedä mitään muistilohkoja. 1328 01:11:01,750 --> 01:11:02,015 Joo? 1329 01:11:02,015 --> 01:11:03,265 >> Yleisö: [kuulumaton]? 1330 01:11:03,265 --> 01:11:05,928 1331 01:11:05,928 --> 01:11:12,670 >> LUCAS: Joten hän kysyy, mikä on ero tekee 1332 01:11:12,670 --> 01:11:14,000 tämä tai tekee malloc. 1333 01:11:14,000 --> 01:11:17,550 Yksi eroista on, että int array 3 on luoda 1334 01:11:17,550 --> 01:11:19,260 array pinoon. 1335 01:11:19,260 --> 01:11:23,080 Ja kun teen malloc, se luo kasaan. 1336 01:11:23,080 --> 01:11:25,250 Onko järkeä? 1337 01:11:25,250 --> 01:11:28,870 >> Joten miten malloc todella toimii? 1338 01:11:28,870 --> 01:11:32,245 Joten miksi me edes tarvitse käyttää malloc? 1339 01:11:32,245 --> 01:11:35,730 1340 01:11:35,730 --> 01:11:39,700 Kääntäjä minkäänlaista laskelmaa kaikki muuttujia, jotka olet julistanut. 1341 01:11:39,700 --> 01:11:44,040 Hän luo tilaa kaikille Heistä pinossa. 1342 01:11:44,040 --> 01:11:47,180 Joten kaikki muuttujat ovat menossa olla jossain pinossa. 1343 01:11:47,180 --> 01:11:49,460 Joten tässä on ympäristön muuttujia. 1344 01:11:49,460 --> 01:11:53,850 >> Joten periaatteessa, tilaa niille muuttujien muistiin on varattu klo 1345 01:11:53,850 --> 01:11:55,080 koota aikaa. 1346 01:11:55,080 --> 01:11:58,790 Niin se tarkoittaa, että tietokoneessa on tietää kaikki nämä muuttujat 1347 01:11:58,790 --> 01:11:59,790 etukäteen. 1348 01:11:59,790 --> 01:12:02,500 Se ei tarvitse tietää, mitä arvoa aiot laittaa niitä. 1349 01:12:02,500 --> 01:12:05,490 Mutta sen täytyy tietää, miten paljon muistia tarvitset. 1350 01:12:05,490 --> 01:12:09,380 >> Mutta nyt sanotaan, että esimerkiksi luot taulukon tai ottamalla 1351 01:12:09,380 --> 01:12:13,430 merkkijonon että käytät käyttäjältä. 1352 01:12:13,430 --> 01:12:17,300 Et tiedä kuinka kauan merkkijono tulee olemaan, esimerkiksi. 1353 01:12:17,300 --> 01:12:20,600 Joten et tiedä tarkalleen, kuinka monta muistilohkoja voit jakaa, eikö? 1354 01:12:20,600 --> 01:12:24,120 >> Joten se ei todellakaan järkevää voit sanoa laittaa 100 merkkiä. 1355 01:12:24,120 --> 01:12:26,420 Ja mitä sitten, jos käyttäjä kirjoittaa 150? 1356 01:12:26,420 --> 01:12:27,670 Olet menossa ruuvata. 1357 01:12:27,670 --> 01:12:30,160 1358 01:12:30,160 --> 01:12:34,620 >> Joten periaatteessa, et voi olla varma siitä, miten paljon muistia sinun tarvitse varata 1359 01:12:34,620 --> 01:12:35,960 kun käännät ohjelman. 1360 01:12:35,960 --> 01:12:38,240 Vain tietää, että ajoaika. 1361 01:12:38,240 --> 01:12:39,950 Joten siksi sinulla kasaan. 1362 01:12:39,950 --> 01:12:47,610 Joten kasaan joutuu muisti että olet jaettaessa aikana 1363 01:12:47,610 --> 01:12:50,810 Ohjelman keston käynnissä. 1364 01:12:50,810 --> 01:12:55,780 >> Joten periaatteessa, kun teet malloc, mitä teet on kohdentaa muistia 1365 01:12:55,780 --> 01:13:00,160 runtime, mikä tarkoittaa, että olet päättää juuri sillä hetkellä, kun 1366 01:13:00,160 --> 01:13:02,670 pitäisi olla, että muisti. 1367 01:13:02,670 --> 01:13:04,210 Niin, että kun olet sen jakamisesta. 1368 01:13:04,210 --> 01:13:06,430 Onko järkeä? 1369 01:13:06,430 --> 01:13:11,690 >> Joten muistakaa, pino on muuttujien että luodaan käännöksen yhteydessä. 1370 01:13:11,690 --> 01:13:14,560 Ja sitten kasa on muuttujien että luodaan as you go 1371 01:13:14,560 --> 01:13:15,600 jossa malloc, esimerkiksi. 1372 01:13:15,600 --> 01:13:16,850 >> Yleisö: [kuulumaton]? 1373 01:13:16,850 --> 01:13:19,179 1374 01:13:19,179 --> 01:13:24,340 >> LUCAS: Niin GetString on menossa soittaa malloc. 1375 01:13:24,340 --> 01:13:26,710 Saanen puhua malloc, ja Selitän GetString. 1376 01:13:26,710 --> 01:13:32,000 Joten malloc on sama asia kuten muistin jakamista. 1377 01:13:32,000 --> 01:13:34,600 Joten se tulee kohdentaa muisti kasaan. 1378 01:13:34,600 --> 01:13:40,010 Ja se tulee palauttaa osoittimen jos kyseinen muisti on varattu klo. 1379 01:13:40,010 --> 01:13:43,090 >> Joten kun do-- 1380 01:13:43,090 --> 01:13:44,910 täällä example-- 1381 01:13:44,910 --> 01:13:45,830 n tähti osoitin. 1382 01:13:45,830 --> 01:13:50,520 Ja sitten osoitin vastaa malloc koko tuumaa kertaa 10. 1383 01:13:50,520 --> 01:13:52,110 Olen luomassa osoitin. 1384 01:13:52,110 --> 01:13:59,020 Ja sitten olen osoittamalla, että osoitin arvo on osoitin, joka malloc 1385 01:13:59,020 --> 01:13:59,680 antaa minulle. 1386 01:13:59,680 --> 01:14:04,150 >> Joten pyydän malloc voit jakaa tilaa 10 kokonaislukuja. 1387 01:14:04,150 --> 01:14:05,390 Sitähän se sanoo. 1388 01:14:05,390 --> 01:14:09,020 Ja malloc antaa minulle takaisin osoitin siihen paikkaan. 1389 01:14:09,020 --> 01:14:11,460 Järkeä? 1390 01:14:11,460 --> 01:14:12,270 OK. 1391 01:14:12,270 --> 01:14:17,940 Minä Ja GetString on pohjimmiltaan tekee soittaa malloc joten voit jakaa 1392 01:14:17,940 --> 01:14:21,680 muistiin ajon aikana. 1393 01:14:21,680 --> 01:14:26,460 >> Muista aina tarkistaa null koska malloc aikoo palata null 1394 01:14:26,460 --> 01:14:28,200 jos se ei voi varata muistia. 1395 01:14:28,200 --> 01:14:31,660 Sanotaan, että pyydät naurettava muistin määrä. 1396 01:14:31,660 --> 01:14:33,950 Tietokoneesi ei tule olemaan mahdollisuus käyttää niin paljon. 1397 01:14:33,950 --> 01:14:36,410 >> Joten malloc on juuri menossa palata null. 1398 01:14:36,410 --> 01:14:42,210 Joten muista aina tarkistaa, jos osoitin, että sait malloc on 1399 01:14:42,210 --> 01:14:45,640 null vai ei, koska jos se on, saatat voidaan dereferencing osoittimen ja 1400 01:14:45,640 --> 01:14:48,340 aiheuttaen puoli viat. 1401 01:14:48,340 --> 01:14:50,930 Ja lopuksi, älä unohda vapaa muisti. 1402 01:14:50,930 --> 01:14:57,800 1403 01:14:57,800 --> 01:15:00,560 >> Malloc luo muisti kasaan. 1404 01:15:00,560 --> 01:15:03,436 Ja sinun täytyy vapauttaa muistia ennen ohjelman päättymistä. 1405 01:15:03,436 --> 01:15:05,370 OK, siinä kaikki minulle. 1406 01:15:05,370 --> 01:15:07,900 Anteeksi, Rob. 1407 01:15:07,900 --> 01:15:07,950 Kiitos. 1408 01:15:07,950 --> 01:15:09,878 >> [APPLAUSE] 1409 01:15:09,878 --> 01:15:12,679 >> LUCAS: Viimeisiä kysymyksiä ennen Rob tulee? 1410 01:15:12,679 --> 01:15:13,138 Ei? 1411 01:15:13,138 --> 01:15:13,597 Joo? 1412 01:15:13,597 --> 01:15:15,892 >> Yleisö: En nähnyt tämä verkossa. 1413 01:15:15,892 --> 01:15:17,269 Oletko ladannut sitä vielä? 1414 01:15:17,269 --> 01:15:19,106 >> LUCAS: Mielestäni Dave on lataamalla sen pian. 1415 01:15:19,106 --> 01:15:19,880 >> DAVE: Se on lähetetty. 1416 01:15:19,880 --> 01:15:20,310 >> LUCAS: Se tulee olemaan verkossa. 1417 01:15:20,310 --> 01:15:21,175 >> Yleisö: Se riippuu. 1418 01:15:21,175 --> 01:15:22,090 >> LUCAS: Se menee? 1419 01:15:22,090 --> 01:15:23,157 OK. 1420 01:15:23,157 --> 01:15:23,644 Joo? 1421 01:15:23,644 --> 01:15:27,053 >> Yleisö: [kuulumaton]? 1422 01:15:27,053 --> 01:15:30,285 >> LUCAS: Kyllä, sinun tulisi vapauttaa kaikki muisti, joka laitetaan kasaan. 1423 01:15:30,285 --> 01:15:31,535 >> Yleisö: [kuulumaton]? 1424 01:15:31,535 --> 01:15:34,518 1425 01:15:34,518 --> 01:15:36,160 >> LUCAS: Kyllä. 1426 01:15:36,160 --> 01:15:39,980 Aina, kun on kulttuuri malloc, sinulla pitäisi olla kulttuuri ilmaiseksi 1427 01:15:39,980 --> 01:15:42,640 kun lopetat että muuttuja. 1428 01:15:42,640 --> 01:15:44,800 Joten malloc ja ilmainen ovat aina yhdessä. 1429 01:15:44,800 --> 01:15:45,410 Heidän parhaita ystäviä. 1430 01:15:45,410 --> 01:15:46,720 Joo. 1431 01:15:46,720 --> 01:15:47,970 Rob? 1432 01:15:47,970 --> 01:15:55,595 1433 01:15:55,595 --> 01:15:56,850 >> ROB: Menen nopeasti. 1434 01:15:56,850 --> 01:16:00,466 Ja myös video tulee sietää. 1435 01:16:00,466 --> 01:16:01,716 Minulla on mic. 1436 01:16:01,716 --> 01:16:24,060 1437 01:16:24,060 --> 01:16:26,230 >> OK, joten viikolla viisi tavaraa. 1438 01:16:26,230 --> 01:16:27,970 Ensimmäinen asia, meillä on pino. 1439 01:16:27,970 --> 01:16:33,390 Niin muista, että on olemassa vain yksi pino frame per aktiivinen funktiokutsuna. 1440 01:16:33,390 --> 01:16:34,710 Näemme, että toinen. 1441 01:16:34,710 --> 01:16:37,850 Ja myös muistettava, mitä todella menee kussakin pinokehys aiotaan 1442 01:16:37,850 --> 01:16:41,880 paikalliset muuttujat toimintojamme, argumentteja, jotka siirretään osaksi 1443 01:16:41,880 --> 01:16:43,880 toimintoja, sekä pari muita asioita et todellakaan 1444 01:16:43,880 --> 01:16:45,260 tarvitse murehtia. 1445 01:16:45,260 --> 01:16:50,950 >> Joten tässä on esimerkki ohjelmasta, jossa, huomautus, tärkein on printfing paluu 1446 01:16:50,950 --> 01:16:52,830 arvo foo 4. 1447 01:16:52,830 --> 01:16:57,930 foo on vain aio palata arvo bar 4 pilkku 6. 1448 01:16:57,930 --> 01:17:02,380 Ja palkki tulee asettaa joitakin paikallisia Muuttuja n yhtä suuri kuin 4 kertaa 6. 1449 01:17:02,380 --> 01:17:03,920 Ja sitten palata n. 1450 01:17:03,920 --> 01:17:09,130 >> Joten katsokaamme pinon koko todellinen iteraatio tämän ohjelman. 1451 01:17:09,130 --> 01:17:10,500 Niin siellä alareunassa meidän pinon. 1452 01:17:10,500 --> 01:17:12,620 Muista, että pino kasvaa. 1453 01:17:12,620 --> 01:17:15,370 Joten alareunassa meidän pinon, me on pino runko tärkein. 1454 01:17:15,370 --> 01:17:17,000 Kun ohjelma käynnistyy, tärkein on aina menossa olevan 1455 01:17:17,000 --> 01:17:18,560 alareunassa meidän pinon. 1456 01:17:18,560 --> 01:17:20,880 >> Ja mitä on sisällä meidän pino runko tärkein? 1457 01:17:20,880 --> 01:17:23,810 Joten vaikka ei ole paikallista muuttujat tärkein, kuten aiemmin sanoin, 1458 01:17:23,810 --> 01:17:29,670 olemme argc ja RGV vie tilaa sisällä tärkein pinokehys. 1459 01:17:29,670 --> 01:17:33,260 Joten tärkein on nyt menossa soittaa toiminto foo. 1460 01:17:33,260 --> 01:17:35,125 Ja se tarkoittaa foo on menossa saada oma pino runko. 1461 01:17:35,125 --> 01:17:36,970 >> Joten nyt olemme sisällä funktio foo. 1462 01:17:36,970 --> 01:17:38,610 Ja mitä pitää mennä foo pinokehys? 1463 01:17:38,610 --> 01:17:41,100 No, foo on argumentti n. 1464 01:17:41,100 --> 01:17:45,440 Ja n on 4, koska niinhän Tärkein kulkee kuin foo väitettä. 1465 01:17:45,440 --> 01:17:48,490 >> Joten nyt foo on menossa soittaa bar. 1466 01:17:48,490 --> 01:17:52,070 Mikä on baari olemaan sisällä sen "pinokehys? 1467 01:17:52,070 --> 01:17:55,610 Se on x yhtä suuri kuin 4 y yhtä suuri kuin kuusi. 1468 01:17:55,610 --> 01:17:58,540 Eikä siinä kaikki, että aiomme olla vuonna pinokehys koska baari 1469 01:17:58,540 --> 01:18:00,580 myös paikallinen muuttuja n. 1470 01:18:00,580 --> 01:18:03,370 Ja n aiomme asettaa yhtä 24. 1471 01:18:03,370 --> 01:18:05,750 >> Nyt baari on menossa palauttamaan n. 1472 01:18:05,750 --> 01:18:09,300 Joten baari on palaamassa 24 pinokehys foo. 1473 01:18:09,300 --> 01:18:12,560 Ja koska baari on nyt palaamassa, että tarkoittaa, että me popping pinokehys 1474 01:18:12,560 --> 01:18:14,250 Bar pois pinosta. 1475 01:18:14,250 --> 01:18:18,430 Joten kaikki muistin että baari oli käyttäen on nyt pinosta. 1476 01:18:18,430 --> 01:18:21,550 >> Nyt foo on myös menossa palata 24 to main. 1477 01:18:21,550 --> 01:18:25,470 Joten nyt foo on palaamassa, muisti että foo käytti sen " 1478 01:18:25,470 --> 01:18:27,550 pinokehys on myös mennyt. 1479 01:18:27,550 --> 01:18:29,660 Ja nyt tärkein on menossa soittaa printf. 1480 01:18:29,660 --> 01:18:31,660 Joten printf on vain yksi toiminto. 1481 01:18:31,660 --> 01:18:35,320 Kun vaadimme printf, se tulee olemaan toinen pino runko printf 1482 01:18:35,320 --> 01:18:36,470 funktiokutsua. 1483 01:18:36,470 --> 01:18:37,990 >> Mitä me ohimennen printf? 1484 01:18:37,990 --> 01:18:40,090 Sitähän menevänsä sen pinokehys. 1485 01:18:40,090 --> 01:18:44,970 Ainakin, olemme ohimennen että prosenttia i kenoviiva n ja 1486 01:18:44,970 --> 01:18:47,180 väite 24. 1487 01:18:47,180 --> 01:18:50,370 Voisi olla enemmän se pinokehys jos printf sattuu käyttää joitakin 1488 01:18:50,370 --> 01:18:51,200 paikallisia muuttujia. 1489 01:18:51,200 --> 01:18:51,920 Emme tiedä. 1490 01:18:51,920 --> 01:18:53,810 >> Mutta kaikki menee printf: n pinokehys. 1491 01:18:53,810 --> 01:18:55,740 Se tulee suorittaa printf. 1492 01:18:55,740 --> 01:18:56,830 Sitten printf on tehty. 1493 01:18:56,830 --> 01:18:57,820 Se palaa. 1494 01:18:57,820 --> 01:18:58,960 Lopuksi tärkein tapahtuu. 1495 01:18:58,960 --> 01:18:59,860 Tärkein palaa. 1496 01:18:59,860 --> 01:19:02,020 Ja sitten meidän ohjelma on tehty. 1497 01:19:02,020 --> 01:19:02,480 Joo? 1498 01:19:02,480 --> 01:19:04,505 >> Yleisö: Näetkö [kuulumaton] 1499 01:19:04,505 --> 01:19:05,900 perustelut [kuulumaton] 1500 01:19:05,900 --> 01:19:06,830 parametrit? 1501 01:19:06,830 --> 01:19:09,970 >> ROB: Niin on hiuksenhieno ero välillä argumentteja ja parametrit. 1502 01:19:09,970 --> 01:19:14,400 Ja todella, yhteistä puhua, ihmiset yleensä vain sekoittaa niitä koko ajan. 1503 01:19:14,400 --> 01:19:17,550 Mutta parametrit ovat virallisia nimeksi asioita. 1504 01:19:17,550 --> 01:19:20,180 >> Joten argc ja argv ovat parametrit tärkein. 1505 01:19:20,180 --> 01:19:23,440 Argumentit ovat mitä oikeastaan kulkea kuin parametrit. 1506 01:19:23,440 --> 01:19:28,340 Joten ei kun soitan foo 4, 4 on argumentti olen ohimennen. 1507 01:19:28,340 --> 01:19:31,460 Ja parametri n, sisällä foo, vie arvoon 4 1508 01:19:31,460 --> 01:19:32,880 koska 4 oli argumentti. 1509 01:19:32,880 --> 01:19:35,826 >> Yleisö: [kuulumaton]? 1510 01:19:35,826 --> 01:19:37,880 >> ROB: n on paikallinen muuttuja bar. 1511 01:19:37,880 --> 01:19:41,420 1512 01:19:41,420 --> 01:19:44,960 n on edelleen paikallista aikaa foo, mutta se parametri fooksi. 1513 01:19:44,960 --> 01:19:48,190 Se ei ole paikallinen muuttuja. 1514 01:19:48,190 --> 01:19:48,546 Joo? 1515 01:19:48,546 --> 01:19:51,180 >> Yleisö: [kuulumaton]? 1516 01:19:51,180 --> 01:19:55,400 >> ROB: foo on vain soittaa bar ja palaamassa mitä bar palaa. 1517 01:19:55,400 --> 01:19:56,786 >> Yleisö: [kuulumaton]? 1518 01:19:56,786 --> 01:19:59,591 >> ROB: Joo, vain nähdä useita pino kehyksiä. 1519 01:19:59,591 --> 01:20:00,082 Joo? 1520 01:20:00,082 --> 01:20:03,519 >> Yleisö: Miksi foo nimeltään ennen printf? 1521 01:20:03,519 --> 01:20:05,920 >> ROB: Miksi foo kutsuttiin ennen printf? 1522 01:20:05,920 --> 01:20:10,740 Niin voisin olla, vaan tehdä jotain kuten int x vastaa foo 4 1523 01:20:10,740 --> 01:20:12,980 ja tulostaa x. 1524 01:20:12,980 --> 01:20:17,900 Mutta sen sijaan, minä yhdistetty funktio kyseenalaistaa printf argumentti. 1525 01:20:17,900 --> 01:20:23,670 >> Mutta huomaa, että emme voi oikeastaan suorittaa puhelun printf kunnes 1526 01:20:23,670 --> 01:20:25,610 selvittää, mitä elintarvikkeita 4 on. 1527 01:20:25,610 --> 01:20:27,480 Joten aiomme arvioida tätä. 1528 01:20:27,480 --> 01:20:32,504 Ja vain kerran se on tehty menossa palata ja arvioida tätä. 1529 01:20:32,504 --> 01:20:32,990 Joo? 1530 01:20:32,990 --> 01:20:37,364 >> Yleisö: Koska molemmat bar [kuulumaton] 1531 01:20:37,364 --> 01:20:41,738 arvo, miksi emme ole [kuulumaton]? 1532 01:20:41,738 --> 01:20:44,400 >> ROB: He täysin pitäisi olla int. 1533 01:20:44,400 --> 01:20:46,260 Jota ei ole pyydetty yli useita kulkee. 1534 01:20:46,260 --> 01:20:49,010 Niin se olisi int baari ja int foo koska nämä molemmat 1535 01:20:49,010 --> 01:20:50,460 ovat palaamassa kokonaislukuja. 1536 01:20:50,460 --> 01:20:54,214 Void on vain, jos he eivät aio palata todellisia arvoja. 1537 01:20:54,214 --> 01:20:54,692 Joo? 1538 01:20:54,692 --> 01:20:58,038 >> Yleisö: Jos sinulla olisi viivalle Vastineeksi [kuulumaton]? 1539 01:20:58,038 --> 01:21:01,862 1540 01:21:01,862 --> 01:21:03,730 >> ROB: viivalle vastineeksi? 1541 01:21:03,730 --> 01:21:04,410 >> Yleisö: Joo. 1542 01:21:04,410 --> 01:21:10,780 Kuten jos teit printf ja [kuulumaton] olisi se tulostaa kahdesti? 1543 01:21:10,780 --> 01:21:12,992 >> ROB: Niin sisällä foo? 1544 01:21:12,992 --> 01:21:15,945 Jos meillä olisi printf täällä? 1545 01:21:15,945 --> 01:21:16,750 >> Yleisö: Joo. 1546 01:21:16,750 --> 01:21:19,510 >> ROB: Eli jos meillä olisi printf oikeus täällä, se tulostaa kerran. 1547 01:21:19,510 --> 01:21:23,400 Koska vaadimme foo kerran oikealle täällä, niin me osuma printf. 1548 01:21:23,400 --> 01:21:24,620 Sitten soitamme baari. 1549 01:21:24,620 --> 01:21:25,710 Ja sitten foo palaa. 1550 01:21:25,710 --> 01:21:26,275 Ja se on siinä. 1551 01:21:26,275 --> 01:21:30,985 Me vain joskus tulee printf kerran. 1552 01:21:30,985 --> 01:21:31,482 Joo? 1553 01:21:31,482 --> 01:21:32,973 >> Yleisö: [kuulumaton] 1554 01:21:32,973 --> 01:21:37,950 printf soittamalla foo, koska olemme ensin kutsuvan printf ja sitten luovutat 1555 01:21:37,950 --> 01:21:38,580 argumentteja. 1556 01:21:38,580 --> 01:21:40,960 >> ROB: Eli teoriassa, ei ole printf soittaa foo? 1557 01:21:40,960 --> 01:21:42,220 Niin ei. 1558 01:21:42,220 --> 01:21:47,360 Vain jotta c on menossa toteuttaa näitä asioita on, ennen kuin voimme 1559 01:21:47,360 --> 01:21:49,800 soittaa toiminto, kaikki argumentit toiminnon on 1560 01:21:49,800 --> 01:21:51,600 täysin arvioida. 1561 01:21:51,600 --> 01:21:53,540 Joten ei tämä täysin arvioidaan? 1562 01:21:53,540 --> 01:21:54,610 Kyllä, se on vain merkkijono. 1563 01:21:54,610 --> 01:21:55,480 Se on vain arvo. 1564 01:21:55,480 --> 01:21:57,200 >> Sitten meillä on täysin arvioida tätä. 1565 01:21:57,200 --> 01:21:59,720 Kun tämä on tehty, nyt kaikki argumentit arvioidaan. 1566 01:21:59,720 --> 01:22:01,982 Ja nyt voimme tehdä soittaa printf. 1567 01:22:01,982 --> 01:22:02,478 Joo? 1568 01:22:02,478 --> 01:22:03,966 >> Yleisö: Yksi kysymys. 1569 01:22:03,966 --> 01:22:06,942 Jos sinulla on mitätön toiminto, must Sinulla on paluu puolipiste? 1570 01:22:06,942 --> 01:22:09,910 >> ROB: Et paluuta puolipiste jos sinulla on mitätön toimintoa. 1571 01:22:09,910 --> 01:22:13,370 1572 01:22:13,370 --> 01:22:14,780 OK. 1573 01:22:14,780 --> 01:22:15,830 Joten nyt jotkut kasaan kamaa. 1574 01:22:15,830 --> 01:22:19,640 Joten pino on, miten aiomme käsitellä dynaamisen muistin hallintaa. 1575 01:22:19,640 --> 01:22:23,100 Ja tämä suoraan ristiriidassa sen kanssa, pino jota kutsuisimme automaattivaihteisto 1576 01:22:23,100 --> 01:22:24,100 muistin hallintaa. 1577 01:22:24,100 --> 01:22:27,140 >> Niin pinoon, et koskaan todella käsitellä miten paikalliset muuttujat 1578 01:22:27,140 --> 01:22:30,400 työnnetään ja piipahti pois kaikki Näiden pino kehyksiä ja kaikkea sellaista. 1579 01:22:30,400 --> 01:22:31,070 Sinun ei tarvitse huolehtia siitä. 1580 01:22:31,070 --> 01:22:32,070 Se on automaattinen. 1581 01:22:32,070 --> 01:22:36,990 Joten keko on manuaalinen. 1582 01:22:36,990 --> 01:22:38,070 Ja [äänetön] 1583 01:22:38,070 --> 01:22:41,260 tulee näistä toiminnoista malloc ja ilmainen. 1584 01:22:41,260 --> 01:22:43,550 >> Joten tässä on toinen ohjelma. 1585 01:22:43,550 --> 01:22:47,145 Kaikki me teemme on mallocing kokonaisluku. 1586 01:22:47,145 --> 01:22:49,360 Olemme varastointia tähti x. 1587 01:22:49,360 --> 01:22:52,520 Tietenkin meidän täytyy tarkistaa nähdä, jos x on nolla. 1588 01:22:52,520 --> 01:22:56,400 Sitten me aiomme vain asettaa mitä x on osoittaa 50. 1589 01:22:56,400 --> 01:23:00,350 1590 01:23:00,350 --> 01:23:03,260 Tulosta mitä x on osoittaa, print x, ja sitten vapaa x. 1591 01:23:03,260 --> 01:23:08,920 >> Joten miten tämä todella menossa katsomaan jos katsomme meidän pino ja keko? 1592 01:23:08,920 --> 01:23:10,950 Joten aloitamme uudelleen. 1593 01:23:10,950 --> 01:23:12,580 Alareunassa meidän pinon kuin ennen. 1594 01:23:12,580 --> 01:23:15,930 Muista, että sinun kasaan suoraan vastustaa pino? 1595 01:23:15,930 --> 01:23:18,850 Joten aiomme olla päälle meidän pino sinne. 1596 01:23:18,850 --> 01:23:22,590 >> Niin, että pohja meidän pino, meillä on meidän pino runko tärkein. 1597 01:23:22,590 --> 01:23:28,000 Siinä on tilaa argc, argv, ja me nyt on paikallinen muuttuja x, joka 1598 01:23:28,000 --> 01:23:30,030 on int tähden. 1599 01:23:30,030 --> 01:23:32,240 Joten aiomme kerrata ohjelman kautta. 1600 01:23:32,240 --> 01:23:34,420 Meidän täytyy ensiksi on puhelun malloc. 1601 01:23:34,420 --> 01:23:36,250 >> Joten olemme soittamalla malloc. 1602 01:23:36,250 --> 01:23:37,100 Malloc on funktio. 1603 01:23:37,100 --> 01:23:38,770 Se tulee saada pinokehys. 1604 01:23:38,770 --> 01:23:40,180 Mitä me ohimennen malloc? 1605 01:23:40,180 --> 01:23:41,610 Että tulee mennä sisälle pinon runko. 1606 01:23:41,610 --> 01:23:45,130 Olemme kulkee koko n, joka on 4. 1607 01:23:45,130 --> 01:23:49,700 Niin että johdetaan malloc. 1608 01:23:49,700 --> 01:23:50,910 >> Mitä malloc tehdä? 1609 01:23:50,910 --> 01:23:53,820 Se tarttuu meille tilaa kasaan. 1610 01:23:53,820 --> 01:23:55,320 Joten aiomme mennä kasaan. 1611 01:23:55,320 --> 01:23:57,990 Ja aiomme tarttua 4 tavua kasaan. 1612 01:23:57,990 --> 01:24:01,500 Joten vain antaa, että mielivaltainen osoite. 1613 01:24:01,500 --> 01:24:06,680 0x123 Vain teeskennellä, että on osoite, joka on kasaan. 1614 01:24:06,680 --> 01:24:12,300 >> Joten mikä on todella sisällä että alue muistia osoitteessa Ox123? 1615 01:24:12,300 --> 01:24:13,080 Garbage. 1616 01:24:13,080 --> 01:24:15,270 Joten emme ole tallennettu mitään siinä. 1617 01:24:15,270 --> 01:24:18,830 Niin pitkälle kuin tiedämme, se voisi olla mitään. 1618 01:24:18,830 --> 01:24:20,560 Sinun ei pitäisi olettaa se on nolla. 1619 01:24:20,560 --> 01:24:23,870 Se ei todennäköisesti ole nolla. 1620 01:24:23,870 --> 01:24:26,260 >> Joten nyt malloc palaa. 1621 01:24:26,260 --> 01:24:28,020 Ja mitä me teemme, kun malloc palaa? 1622 01:24:28,020 --> 01:24:29,800 Asetimme mitä se palauttaa. 1623 01:24:29,800 --> 01:24:32,290 Asetamme x sama mitä se on palaamassa. 1624 01:24:32,290 --> 01:24:33,690 Joten mitä se palaamassa? 1625 01:24:33,690 --> 01:24:38,150 Se on palaamassa 0x123 koska se on lohkon osoitetta muistia, että se 1626 01:24:38,150 --> 01:24:40,850 vain jaetaan kasaan. 1627 01:24:40,850 --> 01:24:47,160 >> Joten palata 0x123 x on nyt aiotaan asettaa yhtä suuri kuin 0x123, joka kuvallisesti, 1628 01:24:47,160 --> 01:24:52,940 me usein esiin kuin x, jonka todellinen nuoli osoittaa, että lohko. 1629 01:24:52,940 --> 01:24:55,820 Mutta x on juuri tallentamiseen kyseiseen osoitteeseen. 1630 01:24:55,820 --> 01:24:58,670 Meillä on nyt siis tarkistaa, jos x on nolla. 1631 01:24:58,670 --> 01:24:59,120 Se ei ole nolla. 1632 01:24:59,120 --> 01:25:02,170 Me teeskennellä että malloc onnistunut. 1633 01:25:02,170 --> 01:25:04,950 >> Joten nyt tähti x vastaa 50. 1634 01:25:04,950 --> 01:25:08,450 Joten tähti muistaa se tarkoittaa mene kyseiseen osoitteeseen. 1635 01:25:08,450 --> 01:25:12,700 Joten 0x123 Menemme mene kyseiseen osoitteeseen. 1636 01:25:12,700 --> 01:25:14,660 Niin että tuo meidät sinne. 1637 01:25:14,660 --> 01:25:16,310 Mitä me teemme tähän osoitteeseen? 1638 01:25:16,310 --> 01:25:19,020 Olemme varastointia 50. 1639 01:25:19,020 --> 01:25:22,500 >> Niin sen jälkeen tätä linjaa, sitähän asiat tulevat näyttämään. 1640 01:25:22,500 --> 01:25:24,640 Joten nyt se ei enää roskat sinne. 1641 01:25:24,640 --> 01:25:28,910 Nyt tiedämme, että 50 on kyseisessä Erityisesti osoite, koska 1642 01:25:28,910 --> 01:25:32,410 asetimme sen, että. 1643 01:25:32,410 --> 01:25:32,790 OK? 1644 01:25:32,790 --> 01:25:34,370 Joten nyt olemme menossa painoon f. 1645 01:25:34,370 --> 01:25:38,490 >> Ensin aiomme tulostaa tähti x. 1646 01:25:38,490 --> 01:25:39,640 Joten mikä on tähti x? 1647 01:25:39,640 --> 01:25:44,300 Jälleen tähti x tarkoittaa mennä asia, että x on osoittaa. 1648 01:25:44,300 --> 01:25:47,140 Joten x on tallentamiseen 0x123 Siirry että. 1649 01:25:47,140 --> 01:25:48,490 Saamme 50. 1650 01:25:48,490 --> 01:25:50,540 Joten tulosta f että. 1651 01:25:50,540 --> 01:25:54,900 Ja se tarkoittaa, se tulee tulostaa 50. 1652 01:25:54,900 --> 01:25:56,850 Ja sitten, että palaa. 1653 01:25:56,850 --> 01:25:58,340 >> Ja sitten meillä on toinen printf. 1654 01:25:58,340 --> 01:25:59,370 Olemme nyt prosenttiin s. 1655 01:25:59,370 --> 01:26:01,680 Jos et ole nähnyt sitä, että on kuinka voit tulostaa osoittimen. 1656 01:26:01,680 --> 01:26:04,960 Joten olemme prosenttia i, prosenttia f, ja kaikki nämä jo. 1657 01:26:04,960 --> 01:26:07,160 Joten prosenttia p, tulostaa osoittimen. 1658 01:26:07,160 --> 01:26:08,920 >> Joten x on osoitin. 1659 01:26:08,920 --> 01:26:13,440 Joten jos aiomme tulostaa x itse, me tulostaa mitä on itse sisällä 1660 01:26:13,440 --> 01:26:19,220 x, joka on 0x123 Joten ensimmäinen Tulosta f on menossa painoon 50. 1661 01:26:19,220 --> 01:26:23,620 Toinen print f on menossa tulostaa 0x123 Yeah? 1662 01:26:23,620 --> 01:26:27,460 >> Yleisö: Käytätkö prosenttia x tulostaa osoitin? 1663 01:26:27,460 --> 01:26:31,200 >> ROB: Eli käytät prosenttia x tulostaa osoitin? 1664 01:26:31,200 --> 01:26:38,350 Joten voit vaan prosenttia x on juuri, Yleisemmin, kuten jos sinulla on joitakin 1665 01:26:38,350 --> 01:26:40,325 kokonaisluku ja haluat tulostaa se heksadesimaaliarvoina. 1666 01:26:40,325 --> 01:26:43,250 1667 01:26:43,250 --> 01:26:44,880 Se on vain miten se tehdään. 1668 01:26:44,880 --> 01:26:47,160 >> Sekä katsoo, prosenttia d olisi tulostaa desimaalin. 1669 01:26:47,160 --> 01:26:50,310 Se olimme saada prosenttia d. i on vain kokonaisluku. 1670 01:26:50,310 --> 01:26:52,690 prosenttia p on nimenomaan ja viitteitä. 1671 01:26:52,690 --> 01:26:54,060 >> Joten x on osoitin. 1672 01:26:54,060 --> 01:26:56,360 Haluamme käyttää prosenttiin p. 1673 01:26:56,360 --> 01:26:57,937 Mutta prosenttia x voisi toimia. 1674 01:26:57,937 --> 01:26:58,414 Joo? 1675 01:26:58,414 --> 01:26:59,664 >> Yleisö: [kuulumaton]? 1676 01:26:59,664 --> 01:27:04,138 1677 01:27:04,138 --> 01:27:05,388 >> ROB: Joo. 1678 01:27:05,388 --> 01:27:07,870 1679 01:27:07,870 --> 01:27:13,440 Ainakin tämän call-- niin minä jättänyt sen tänne. 1680 01:27:13,440 --> 01:27:19,850 Mutta nämä kaksi väitettä eivät välttämättä sisäosat pinokehys 1681 01:27:19,850 --> 01:27:23,040 sekä mahdolliset paikalliset muuttujat printf sattuu olemaan käyttäen. 1682 01:27:23,040 --> 01:27:27,020 Ja sitten seuraava puhelu printf nyt sisäpuolella printf pinokehys on 1683 01:27:27,020 --> 01:27:33,960 prosenttia p kenoviiva n ja mitä x: n arvo on, joka on 0x123. 1684 01:27:33,960 --> 01:27:34,425 Joo? 1685 01:27:34,425 --> 01:27:35,675 >> Yleisö: [kuulumaton]? 1686 01:27:35,675 --> 01:27:38,145 1687 01:27:38,145 --> 01:27:40,880 >> ROB: Se tulostaa jotain joka näyttää tältä. 1688 01:27:40,880 --> 01:27:41,846 >> Yleisö: [kuulumaton]. 1689 01:27:41,846 --> 01:27:44,510 >> ROB: Joten se tulostaa sen osoite muodossa. 1690 01:27:44,510 --> 01:27:47,003 Se näyttää osoitteen. 1691 01:27:47,003 --> 01:27:47,494 Joo? 1692 01:27:47,494 --> 01:27:49,458 >> Yleisö: [kuulumaton]? 1693 01:27:49,458 --> 01:27:51,075 >> ROB: Miksi mitä? 1694 01:27:51,075 --> 01:27:52,920 >> Yleisö: [kuulumaton]? 1695 01:27:52,920 --> 01:27:55,240 >> ROB: Miksi tämä osoitin 4 tavua? 1696 01:27:55,240 --> 01:27:58,500 Joten on olemassa koko joukko 0: n edessä tämän. 1697 01:27:58,500 --> 01:28:03,740 Joten se on todella 0x0000000123. 1698 01:28:03,740 --> 01:28:06,510 64-bittinen järjestelmä ei olisi koko joukko enemmän nollia. 1699 01:28:06,510 --> 01:28:11,410 1700 01:28:11,410 --> 01:28:11,900 Joo? 1701 01:28:11,900 --> 01:28:13,150 >> Yleisö: [kuulumaton]. 1702 01:28:13,150 --> 01:28:17,290 1703 01:28:17,290 --> 01:28:21,130 >> ROB: Joten ensimmäinen Printf on menossa print-- 1704 01:28:21,130 --> 01:28:21,980 >> Yleisö: [kuulumaton]. 1705 01:28:21,980 --> 01:28:24,420 >> ROB: Kyllä, se tulee tulostaa mitä x viittaa. 1706 01:28:24,420 --> 01:28:27,030 1707 01:28:27,030 --> 01:28:29,070 Star sanoo mikä on tämän asia osoittaa. 1708 01:28:29,070 --> 01:28:30,300 Napata se. 1709 01:28:30,300 --> 01:28:31,455 Joten mitä se osoittaa? 1710 01:28:31,455 --> 01:28:31,850 50. 1711 01:28:31,850 --> 01:28:32,410 Napata se. 1712 01:28:32,410 --> 01:28:33,390 Sitähän aiomme tulostaa. 1713 01:28:33,390 --> 01:28:37,020 Sekä katsoo, seuraava, olemme vain tulostus x itse. 1714 01:28:37,020 --> 01:28:38,850 Mikä on sisällä f? 1715 01:28:38,850 --> 01:28:43,710 0x123. 1716 01:28:43,710 --> 01:28:44,500 OK. 1717 01:28:44,500 --> 01:28:46,620 >> Ja sitten lopuksi, meillä on ilmainen. 1718 01:28:46,620 --> 01:28:48,040 Mitä me ohimennen vapauttaa? 1719 01:28:48,040 --> 01:28:49,470 Olemme kulkee x. 1720 01:28:49,470 --> 01:28:52,380 Tuolloin en oikeastaan ​​näy se pinokehys. 1721 01:28:52,380 --> 01:28:56,370 >> Joten olemme ohimennen arvo 0x123 vapauttaa. 1722 01:28:56,370 --> 01:28:59,070 Joten nyt ilmaiseksi tietää, okei, Minun täytyy mennä jopa kasaan 1723 01:28:59,070 --> 01:29:00,050 ja vapaa että muistia. 1724 01:29:00,050 --> 01:29:03,920 Se enää käytä mitä on osoitteessa 0x123. 1725 01:29:03,920 --> 01:29:07,010 >> Niin vapaa on menossa vapauttamaan että kasasta. 1726 01:29:07,010 --> 01:29:09,490 Nyt meidän pino on taas tyhjä. 1727 01:29:09,490 --> 01:29:11,120 Meillä ei muistivuodot. 1728 01:29:11,120 --> 01:29:12,940 Nyt ilmainen palaa. 1729 01:29:12,940 --> 01:29:16,130 Huomaa, että x on vielä 0x123. 1730 01:29:16,130 --> 01:29:18,240 Mutta se ei nyt ole sopivaa muistia. 1731 01:29:18,240 --> 01:29:21,220 1732 01:29:21,220 --> 01:29:23,986 Enää ei pitäisi dereference x. 1733 01:29:23,986 --> 01:29:24,440 Joo? 1734 01:29:24,440 --> 01:29:27,240 >> Yleisö: Onko palata 0 tarpeeton? 1735 01:29:27,240 --> 01:29:28,290 >> ROB: Onko returen 0 tarpeeton? 1736 01:29:28,290 --> 01:29:31,110 Kyllä. 1737 01:29:31,110 --> 01:29:33,950 Olemme vain laittaa, että koska meillä on paluu yksi ilman. 1738 01:29:33,950 --> 01:29:36,830 Niin se on, joo, antaa kuuluvat paluuta 0. 1739 01:29:36,830 --> 01:29:37,310 Joo? 1740 01:29:37,310 --> 01:29:38,560 >> Yleisö: [kuulumaton]? 1741 01:29:38,560 --> 01:29:42,110 1742 01:29:42,110 --> 01:29:45,580 >> ROB: Joten sen jälkeen vapaa x, mitä tapahtuu, jos yritämme dereference osoitin? 1743 01:29:45,580 --> 01:29:47,240 On mahdollista, että mikään menee pieleen. 1744 01:29:47,240 --> 01:29:49,330 On mahdollista, että me vielä saada 50. 1745 01:29:49,330 --> 01:29:53,590 >> On mahdollista myös, että muisti on Nyt käytetään jotain muuta. 1746 01:29:53,590 --> 01:29:57,140 Joten se on määrittelemätön käyttäytymistä. 1747 01:29:57,140 --> 01:30:00,772 Ja määrittelemätön tarkoittaa mitään voi tapahtua. 1748 01:30:00,772 --> 01:30:01,250 Joo? 1749 01:30:01,250 --> 01:30:02,500 >> Yleisö: [kuulumaton]? 1750 01:30:02,500 --> 01:30:07,942 1751 01:30:07,942 --> 01:30:10,830 >> ROB: Ei, joten jos annat x jotain muuta. 1752 01:30:10,830 --> 01:30:15,870 Joten jos täällä sanoimme x vastaa malloc jotain else-- 1753 01:30:15,870 --> 01:30:17,100 malloc koko event-- 1754 01:30:17,100 --> 01:30:20,180 niin että alkuperäinen lohko muistia ei ole vapautettu. 1755 01:30:20,180 --> 01:30:21,490 Ja olemme virallisesti menettänyt sen. 1756 01:30:21,490 --> 01:30:23,150 Se on muisti vuotaa. 1757 01:30:23,150 --> 01:30:25,090 Menetimme kaikki viittaukset sen, että lohko muistia. 1758 01:30:25,090 --> 01:30:26,827 Joten ei ole tapa, jolla voimme koskaan vapauttaa sitä. 1759 01:30:26,827 --> 01:30:32,074 1760 01:30:32,074 --> 01:30:36,630 OK, joten palaa 0 keinoin tehty. 1761 01:30:36,630 --> 01:30:37,900 >> Okei, joten pinon ylivuoto. 1762 01:30:37,900 --> 01:30:39,320 Mikä idea tässä? 1763 01:30:39,320 --> 01:30:41,210 Joten muistakaa, keko on menossa alaspäin. 1764 01:30:41,210 --> 01:30:43,480 Pino on menossa ylös. 1765 01:30:43,480 --> 01:30:48,000 Joten tämä oli esimerkki luento, Luulen, jossa tärkein on juuri menossa 1766 01:30:48,000 --> 01:30:51,380 kutsua tätä toimintoa foo, joka on menossa kutsua itseään rekursiivisesti yli ja 1767 01:30:51,380 --> 01:30:52,320 uudestaan. 1768 01:30:52,320 --> 01:30:55,370 >> Joten pino kehyksiä ovat menossa toimivat täsmälleen sama. 1769 01:30:55,370 --> 01:30:58,130 Joten aiomme aloittaa tärkeimpien kuten pohja pinokehykseen. 1770 01:30:58,130 --> 01:31:02,000 Sitten tärkein on menossa soittaa foo, joka on menossa pinokehys. 1771 01:31:02,000 --> 01:31:04,260 >> Sitten foo on menossa soittaa foo uudelleen, mikä on menossa 1772 01:31:04,260 --> 01:31:05,500 toinen pinokehys. 1773 01:31:05,500 --> 01:31:08,270 Ja sitten taas, ja uudestaan, ja uudestaan, ja uudelleen, kunnes lopulta, otamme 1774 01:31:08,270 --> 01:31:09,190 osaksi kasaan. 1775 01:31:09,190 --> 01:31:11,990 Joten tämä on, miten saamme pinon ylivuoto. 1776 01:31:11,990 --> 01:31:14,910 Ja tässä vaiheessa, voit seg vika. 1777 01:31:14,910 --> 01:31:17,335 Tai olisit todella seg vika ennen tässä vaiheessa, mutta joo. 1778 01:31:17,335 --> 01:31:19,660 >> Yleisö: Onko core dump sama kuin seg vika? 1779 01:31:19,660 --> 01:31:26,140 >> ROB: Niin näet segmentointi vika ydin polkumyynnillä. 1780 01:31:26,140 --> 01:31:28,760 Saat core dump kun te seg vika. 1781 01:31:28,760 --> 01:31:32,580 Ja se on kuin kaatopaikka kaikkien sisältö nykyisen muistin niin 1782 01:31:32,580 --> 01:31:36,670 että voit kokeilla ja tunnistaa miksi te seg vialliseksi. 1783 01:31:36,670 --> 01:31:37,135 Joo? 1784 01:31:37,135 --> 01:31:38,385 >> Yleisö: [kuulumaton]? 1785 01:31:38,385 --> 01:31:40,855 1786 01:31:40,855 --> 01:31:45,460 >> ROB: Joten segmentointi vika välineet siellä pinon ylivuoto. 1787 01:31:45,460 --> 01:31:47,060 Niin ei välttämättä. 1788 01:31:47,060 --> 01:31:49,880 Segmentointi vika tarkoittaa, että olet koskettaa muistin tavalla 1789 01:31:49,880 --> 01:31:50,880 sinun ei pitäisi olla. 1790 01:31:50,880 --> 01:31:54,750 Joten yksi tapa, että tapahtuu on, kun pärjäät ylivuoto, alamme koskettaa 1791 01:31:54,750 --> 01:31:58,736 muistia niin, että meidän ei pitäisi olla. 1792 01:31:58,736 --> 01:31:59,208 Joo? 1793 01:31:59,208 --> 01:32:00,458 >> Yleisö: [kuulumaton]? 1794 01:32:00,458 --> 01:32:03,456 1795 01:32:03,456 --> 01:32:05,830 >> ROB: Niin sisällä päättymättömään silmukkaan. 1796 01:32:05,830 --> 01:32:08,770 Like, tämä on kuin rekursiivinen ääretön silmukka ja niin saamme toinen 1797 01:32:08,770 --> 01:32:09,770 pino runko joka kerta. 1798 01:32:09,770 --> 01:32:13,540 Mutta vain sisällä säännöllisen ääretön taas one-- 1799 01:32:13,540 --> 01:32:16,390 hyvin, älkäämme edes tulosta F-- 1800 01:32:16,390 --> 01:32:17,040 tehdä jotain. 1801 01:32:17,040 --> 01:32:18,390 Whatever. 1802 01:32:18,390 --> 01:32:20,610 >> Emme tule saamaan toinen pinokehys. 1803 01:32:20,610 --> 01:32:22,530 Olemme juuri menossa pitämään kiehkura tänä yksi käsky. 1804 01:32:22,530 --> 01:32:23,920 Pino ei kasva. 1805 01:32:23,920 --> 01:32:27,290 Se on se, että jokainen rekursiivinen Puhelu antaa meille pinokehys. 1806 01:32:27,290 --> 01:32:31,231 Siksi saamme pinon ylivuoto. 1807 01:32:31,231 --> 01:32:31,728 Joo? 1808 01:32:31,728 --> 01:32:38,189 >> Yleisö: Joten jos sanoit saada while-silmukka ja sitten [kuulumaton]? 1809 01:32:38,189 --> 01:32:42,000 >> ROB: Joten jos sisällä while-silmukka oli printf, voit silti 1810 01:32:42,000 --> 01:32:42,790 ei seg vika. 1811 01:32:42,790 --> 01:32:46,090 En vain halua sekoittaa asioita. 1812 01:32:46,090 --> 01:32:46,610 Se olisi silmukka. 1813 01:32:46,610 --> 01:32:48,225 Saat luultavasti yksi pino Runko printf. 1814 01:32:48,225 --> 01:32:49,580 >> Sitten printf palaisi. 1815 01:32:49,580 --> 01:32:50,280 Sitten sinun silmukka uudelleen. 1816 01:32:50,280 --> 01:32:51,460 Saat luultavasti yksi pino Runko printf. 1817 01:32:51,460 --> 01:32:52,850 Se palaisi. 1818 01:32:52,850 --> 01:32:54,060 Yhden pinokehys. 1819 01:32:54,060 --> 01:33:00,215 Joten et saa tätä ääretöntä kasaantuu pino kehyksiä. 1820 01:33:00,215 --> 01:33:03,185 >> Yleisö: [kuulumaton]? 1821 01:33:03,185 --> 01:33:04,040 >> ROB: Kyllä. 1822 01:33:04,040 --> 01:33:09,360 Joten tämä pinon ylivuoto tapahtuu koska mikään näistä 1823 01:33:09,360 --> 01:33:11,600 puhelut foo ovat palaamassa. 1824 01:33:11,600 --> 01:33:15,250 Joten jos palaamme, niin olisimme alkaa menettää pino kehyksiä. 1825 01:33:15,250 --> 01:33:17,870 Ja sitten emme ylivuoto. 1826 01:33:17,870 --> 01:33:20,070 Ja siksi tarvitset perustapaus omaan toimintoja. 1827 01:33:20,070 --> 01:33:22,992 1828 01:33:22,992 --> 01:33:23,479 Joo? 1829 01:33:23,479 --> 01:33:27,375 >> Yleisö: Onko mahdollisesta koosta ja pino kasaan sama 1830 01:33:27,375 --> 01:33:29,880 kaikki ohjelmat? 1831 01:33:29,880 --> 01:33:31,910 >> ROB: Noin. 1832 01:33:31,910 --> 01:33:35,090 On potentiaalia pinon koon ja kasaan samat kaikissa ohjelmissa? 1833 01:33:35,090 --> 01:33:37,180 Karkeasti. 1834 01:33:37,180 --> 01:33:40,080 On olemassa jonkin verran satunnaistamisesta jossa pino alkaa ja 1835 01:33:40,080 --> 01:33:42,400 jos kasaan alkaa. 1836 01:33:42,400 --> 01:33:45,870 Jos sinulla sattuu olemaan koko paljon globaaleja muuttujia ja asioita, saatat 1837 01:33:45,870 --> 01:33:49,520 ottaa pois tilaa teidän kasaan. 1838 01:33:49,520 --> 01:33:54,060 >> 64-bittinen järjestelmä, voit käytännössä on ääretön muisti. 1839 01:33:54,060 --> 01:33:55,820 On vain niin paljon. 1840 01:33:55,820 --> 01:33:59,250 Välillä 32 bittiä ja 64 bittiä, että on merkittävä ero. 1841 01:33:59,250 --> 01:34:02,350 >> Olet menossa saada paljon enemmän pino ja keko tilaa 64-bittinen 1842 01:34:02,350 --> 01:34:05,810 järjestelmää, koska siellä on vain enemmän korjaa että he voivat käyttää. 1843 01:34:05,810 --> 01:34:09,360 Mutta erillistä järjestelmää, se suunnilleen saman verran pinon 1844 01:34:09,360 --> 01:34:10,785 ja keon tilaa. 1845 01:34:10,785 --> 01:34:13,635 1846 01:34:13,635 --> 01:34:15,530 Kunnossa. 1847 01:34:15,530 --> 01:34:18,220 >> Niin viimeinen asia on kokoelma. 1848 01:34:18,220 --> 01:34:19,810 Niin sinun pitäisi tietää tämä prosessi. 1849 01:34:19,810 --> 01:34:22,240 On neljä isoja askeleita. 1850 01:34:22,240 --> 01:34:24,400 Joten ensimmäinen pitäisi on helppo muistaa. 1851 01:34:24,400 --> 01:34:25,085 Esikäsittelyä. 1852 01:34:25,085 --> 01:34:28,390 Se on etuliite valmiiksi siinä. 1853 01:34:28,390 --> 01:34:32,080 Niin se tulee ennen kaikkea muuta. 1854 01:34:32,080 --> 01:34:34,000 >> Asia on muistaa hash. 1855 01:34:34,000 --> 01:34:37,250 Niin hash määrittelee ja hash sisältää kaikissa näissä. 1856 01:34:37,250 --> 01:34:39,560 Nuo ovat kaikki esikäsittelijänä direktiivejä. 1857 01:34:39,560 --> 01:34:42,030 Nämä ovat asioita, jotka pre-prosessori huolehtii. 1858 01:34:42,030 --> 01:34:43,680 >> Joten mitä pre-prosessori tehdä? 1859 01:34:43,680 --> 01:34:44,850 Se on todella tyhmä juttu. 1860 01:34:44,850 --> 01:34:49,380 Kaikki se kykenee ovat kaikki nämä kopioida ja leikata, ja liitä toiminnot. 1861 01:34:49,380 --> 01:34:51,790 >> Niin hash sisältää standardin I0 piste tuntia. 1862 01:34:51,790 --> 01:34:52,990 Mikä on se tekee? 1863 01:34:52,990 --> 01:34:56,610 Se tarttumalla standardin I0 piste h tiedostoon ja liittämällä se alkuun 1864 01:34:56,610 --> 01:34:58,960 missä sanotaan hash sisältää standardi i0 dot tuntia. 1865 01:34:58,960 --> 01:35:02,480 >> Ja kaikki hash määritellä, että olemme nähnyt, mitä on, että tekee? 1866 01:35:02,480 --> 01:35:06,730 Sen kopiointi arvo hash määritelty määritellään ja liittämistä, että 1867 01:35:06,730 --> 01:35:08,500 missä käytät arvoa. 1868 01:35:08,500 --> 01:35:13,400 Joten esikäsittelijään vain ei oikeastaan yksinkertaista tekstiä perustuva liiketoiminta. 1869 01:35:13,400 --> 01:35:15,870 Se ei mitenkään fiksu. 1870 01:35:15,870 --> 01:35:18,920 Niin kaikki muu on monimutkaisempi. 1871 01:35:18,920 --> 01:35:22,970 >> Joten nyt esikäsittelijän tehty, me itse koota. 1872 01:35:22,970 --> 01:35:24,320 Joten mitä kokoamiseen tarkoittaa? 1873 01:35:24,320 --> 01:35:27,310 Olemme nyt menee C-koodi kokoonpanoon koodia. 1874 01:35:27,310 --> 01:35:27,570 Joo? 1875 01:35:27,570 --> 01:35:28,820 >> Yleisö: [kuulumaton]? 1876 01:35:28,820 --> 01:35:32,390 1877 01:35:32,390 --> 01:35:34,220 >> ROB: Joo, saimme sen. 1878 01:35:34,220 --> 01:35:36,880 1879 01:35:36,880 --> 01:35:38,660 Niin kokoamisessa. 1880 01:35:38,660 --> 01:35:40,310 Menemme C: stä kokoonpanoon. 1881 01:35:40,310 --> 01:35:42,470 Joten tämä on todellinen kielen muutos. 1882 01:35:42,470 --> 01:35:45,240 Kääntäminen itsessään tarkoittaa menee korkeamman tason kieli 1883 01:35:45,240 --> 01:35:47,340 alemman tason kieli. 1884 01:35:47,340 --> 01:35:50,720 >> Ja c on korkean tason kielellä verrattuna kokoonpanoon. 1885 01:35:50,720 --> 01:35:52,320 Mikä on kokoonpano? 1886 01:35:52,320 --> 01:35:56,440 Sen ohjeita ovat melko paljon, tehty suorittimen. 1887 01:35:56,440 --> 01:35:59,130 Mutta tietokone ei vieläkään ei ymmärrä kokoonpano. 1888 01:35:59,130 --> 01:36:01,570 Se ymmärtää vain ykkösiä ja nollia. 1889 01:36:01,570 --> 01:36:06,160 Niin seuraava askel on kokoonpano, joka tuo meille näistä ohjeita 1890 01:36:06,160 --> 01:36:08,760 suorittimen ymmärtää ja tosiasiallisesti muuntaa ne, jotta 1891 01:36:08,760 --> 01:36:10,820 ykkösiä ja nollia. 1892 01:36:10,820 --> 01:36:13,570 >> Joten C kokoonpano binary. 1893 01:36:13,570 --> 01:36:15,870 Mutta minulla ei ole suoritettavissa vielä. 1894 01:36:15,870 --> 01:36:19,550 Niin ajattele CS50 kirjasto. 1895 01:36:19,550 --> 01:36:23,070 Olemme toimittaneet teille binary Tämän CS50 kirjasto, joka on GetString 1896 01:36:23,070 --> 01:36:24,400 ja GetInt ja kaikki. 1897 01:36:24,400 --> 01:36:25,700 >> Mutta CS50 library-- 1898 01:36:25,700 --> 01:36:27,650 in ja itself-- ei ole suoritettavissa. 1899 01:36:27,650 --> 01:36:29,570 Se ei ole tärkein ominaisuus. 1900 01:36:29,570 --> 01:36:32,230 Se on vain joukko binary joita voit käyttää. 1901 01:36:32,230 --> 01:36:41,730 Joten linkittäminen on miten yhdistämme kaikki Näiden eri binääritiedostoina 1902 01:36:41,730 --> 01:36:43,110 osaksi varsinaista suoritettavaa. 1903 01:36:43,110 --> 01:36:45,900 Yksi että voit kirjoittaa dot slash dot pois. 1904 01:36:45,900 --> 01:36:51,660 >> Joten tämä on kuin tiedosto kirjoitti, - mikä tahansa ohjelma on-- 1905 01:36:51,660 --> 01:36:53,620 Ceaser piste c. 1906 01:36:53,620 --> 01:36:55,100 Mutta nyt se on koottu alas binary. 1907 01:36:55,100 --> 01:36:56,480 Joten Ceaser dot o. 1908 01:36:56,480 --> 01:36:59,620 Ja tämä on meidän CS50 kirjastot binary. 1909 01:36:59,620 --> 01:37:02,284 Ja he yhdistämistä yhdeksi suoritettavan. 1910 01:37:02,284 --> 01:37:02,758 Joo? 1911 01:37:02,758 --> 01:37:04,008 >> Yleisö: [kuulumaton]? 1912 01:37:04,008 --> 01:37:08,800 1913 01:37:08,800 --> 01:37:12,710 >> ROB: Ensin kuuluu, muista, hash kuuluu on todella 1914 01:37:12,710 --> 01:37:13,810 pre-prosessori vaiheessa. 1915 01:37:13,810 --> 01:37:14,750 Mutta se on erillinen. 1916 01:37:14,750 --> 01:37:20,730 Jos et käytä mitään toimintoja, jotka ovat ulkopuolella oman yksittäisen tiedoston sitten, 1917 01:37:20,730 --> 01:37:26,100 Ei, sinun ei tarvitse liittää mitään koska sinulla on kaikki. 1918 01:37:26,100 --> 01:37:30,310 >> Se sanoi, printf on linkitettynä. 1919 01:37:30,310 --> 01:37:32,820 Jos joskus käyttää printf, että jotain , joka on sidoksissa 1920 01:37:32,820 --> 01:37:35,740 koska et kirjoita sitä. 1921 01:37:35,740 --> 01:37:39,530 Ja itse asiassa, printf on automaattisesti sidoksissa. 1922 01:37:39,530 --> 01:37:42,760 Tiedät miten komentoriviltä tai kun kirjoittamasi tehdä, näet sen on 1923 01:37:42,760 --> 01:37:46,690 viiva L CS50, jossa on linkki vuonna CS50 kirjastossa? 1924 01:37:46,690 --> 01:37:49,070 Printf, ja muuta vastaavaa, on menossa voidaan liittää automaattisesti. 1925 01:37:49,070 --> 01:37:51,730 1926 01:37:51,730 --> 01:37:53,930 Kysyttävää mistään? 1927 01:37:53,930 --> 01:37:56,280 >> Yleisö: [kuulumaton]? 1928 01:37:56,280 --> 01:37:58,300 >> ROB: linkki? 1929 01:37:58,300 --> 01:38:03,450 Meillä on koko joukko eri binääritiedostoina. 1930 01:38:03,450 --> 01:38:06,410 Tämä on kanoninen esimerkki että käytämme on CS50 kirjasto. 1931 01:38:06,410 --> 01:38:09,960 Olemme koonneet ja antaa sen sinulle binary tähän CS50 kirjastoon. 1932 01:38:09,960 --> 01:38:12,410 >> Haluat käyttää GetString ohjelmaan. 1933 01:38:12,410 --> 01:38:14,750 Joten te mennä ja käyttää GetString. 1934 01:38:14,750 --> 01:38:19,700 Mutta ilman minun binary koodi GetString, kun kääntää koodin 1935 01:38:19,700 --> 01:38:23,140 alas, et voi itse ajaa Ohjelma koska GetString String on 1936 01:38:23,140 --> 01:38:25,080 ei ole vielä täysin määritelty. 1937 01:38:25,080 --> 01:38:29,220 >> Vasta kun linkität minun binary joka sisältää GetString, että nyt, kaikki 1938 01:38:29,220 --> 01:38:31,130 oikea, voin todella suorittaa GetString. 1939 01:38:31,130 --> 01:38:32,330 Minun tiedosto on valmis. 1940 01:38:32,330 --> 01:38:34,208 Ja voin ajaa tätä. 1941 01:38:34,208 --> 01:38:34,697 Joo? 1942 01:38:34,697 --> 01:38:37,631 >> Yleisö: Onko yhteen kytkemiseen muuntaa binary suoritettavia? 1943 01:38:37,631 --> 01:38:42,032 Joten vaikka sinulla ei ole muita kirjastot, eikö silti 1944 01:38:42,032 --> 01:38:44,477 tarpeen kääntää [äänetön]? 1945 01:38:44,477 --> 01:38:48,640 >> ROB: Niin suoritettavan on edelleen binary. 1946 01:38:48,640 --> 01:38:51,750 Se on vain yhdistämällä koko nippu binäärit. 1947 01:38:51,750 --> 01:38:55,124 1948 01:38:55,124 --> 01:38:56,591 >> Yleisö: Kiitos paljon. 1949 01:38:56,591 --> 01:38:58,560 >> ROB: Ei hätää. 1950 01:38:58,560 --> 01:38:59,540 Muita kysymyksiä? 1951 01:38:59,540 --> 01:39:02,001 Muuten me kaikki asetettu. 1952 01:39:02,001 --> 01:39:02,690 Kunnossa. 1953 01:39:02,690 --> 01:39:02,990 Kiitos. 1954 01:39:02,990 --> 01:39:03,590 >> [APPLAUSE] 1955 01:39:03,590 --> 01:39:04,490 >> Yleisö: Kiitos. 1956 01:39:04,490 --> 01:39:05,740 >> ROB: Joo. 1957 01:39:05,740 --> 01:39:06,582