1 00:00:00,000 --> 00:00:00,410 2 00:00:00,410 --> 00:00:03,130 >> David J. Malan: Taigi paaiškėja, kad Kopijuojant eilutę yra toli gražu ne taip 3 00:00:03,130 --> 00:00:05,750 paprasta, kaip kopijavimo primityvus, kaip int ar plūdės. 4 00:00:05,750 --> 00:00:09,190 Galų gale, po kapotu eilutė yra sekos simbolių. 5 00:00:09,190 --> 00:00:13,130 Taigi kopijuoti eilutę, todėl turi įtraukti kopijavimo kad visą seką 6 00:00:13,130 --> 00:00:14,240 simbolių. 7 00:00:14,240 --> 00:00:17,470 >> Leiskite savo ruožtu mūsų dėmesį į tai paskutinis įgyvendinimas ir išplėšti tai 8 00:00:17,470 --> 00:00:21,470 linija, styginių t lygu s, kurios aiškiai nepakako. 9 00:00:21,470 --> 00:00:24,440 Tegul jį pakeisti eilutę, atrodo, vietoj to, kaip šis. 10 00:00:24,440 --> 00:00:34,020 Styginių t gauna malloc stygų ilgį s ir 1 kartų iš char dydis. 11 00:00:34,020 --> 00:00:36,320 >> Dabar yra citata šiek tiek vyksta dėl šio kodo eilutę. 12 00:00:36,320 --> 00:00:39,330 Pirma, malloc, trumpas atmintis paskirstymą ir 13 00:00:39,330 --> 00:00:40,700 funkcija veikia tik tai. 14 00:00:40,700 --> 00:00:44,740 Atsižvelgiant į tai, sveikasis skaičius, jis grįžta į jus ir adresas iš atminties riekė 15 00:00:44,740 --> 00:00:45,960 kad daugelis baitai. 16 00:00:45,960 --> 00:00:50,090 Tuo tarpu eilutės ilgis s plius 1 yra skirtas nurodyti, kad mes norime, kaip 17 00:00:50,090 --> 00:00:54,690 daug baitų pat s, jau užima, įskaitant null terminatorius, 18 00:00:54,690 --> 00:00:57,050 Backslash 0 prie eilutės pabaigos. 19 00:00:57,050 --> 00:01:00,170 >> Tuo tarpu, aš nebūtinai prisiminti kaip didelis char yra, net 20 00:01:00,170 --> 00:01:04,340 nors daugumoje sistemų tai tiesiog 1 baitų, todėl aš skambinti dydį char į 21 00:01:04,340 --> 00:01:08,210 išsiaiškinti, dinamiškai, kaip didelis individualių savybių yra. 22 00:01:08,210 --> 00:01:12,550 Kai padauginta kartu, aš grįšiu bendras baitų skaičius, kad man reikia. 23 00:01:12,550 --> 00:01:14,680 >> Bet kas, jei malloc nepavyksta grįžti atmintį turime? 24 00:01:14,680 --> 00:01:16,730 Aš geriausia patikrinti, kad taip. 25 00:01:16,730 --> 00:01:23,330 Jei t lygu nuliui, tada aš pirmą kartą vyksta nemokamų s, atmintis grįžo GET 26 00:01:23,330 --> 00:01:27,120 eilutę, ir tada aš ruošiuosi grįžti 1, reikšti klaidą. 27 00:01:27,120 --> 00:01:30,360 >> Bet jei viskas yra gerai, aš ruošiuosi pradėti naudoti keturis linijos ir pakartoti 28 00:01:30,360 --> 00:01:31,110 taip. 29 00:01:31,110 --> 00:01:36,000 Dėl int gaunu 0, n lygu string ilgis s. 30 00:01:36,000 --> 00:01:40,350 Aš ruošiuosi tai padaryti tol, kol i mažesnis arba lygus n, kad aš 31 00:01:40,350 --> 00:01:44,460 kartoti iki per imtinai null pabaigos simbolis s. 32 00:01:44,460 --> 00:01:47,450 >> Ir kiekvienos iteracijos, aš ketina prieaugio i. 33 00:01:47,450 --> 00:01:52,496 Tuo tarpu viduje šios linijos, kopijuoti s "i-osios simbolis" T "i-osios 34 00:01:52,496 --> 00:01:59,310 vieta, pakanka padaryti k laikiklis i gauna us laikiklis i. 41 00:01:59,320 --> 00:02:02,750 >> Leiskite dabar įrašyti, kaupti ir paleisti šią naują programą. 42 00:02:02,750 --> 00:02:06,690 Padaryti kopiją 1 taškas velniop kopiją 1. 43 00:02:06,690 --> 00:02:09,460 Ir aš pasakyti kažką panašaus Apie visose mažosiomis raidėmis. 44 00:02:09,460 --> 00:02:12,280 Ir laimei, šį kartą mano originalas lieka nepakitusi. 45 00:02:12,280 --> 00:02:13,660 Apie visose mažosiomis raidėmis. 46 00:02:13,660 --> 00:02:15,540 Bet kopija yra, iš tikrųjų, kapitalizuojamos. 47 00:02:37,120 --> 00:02:38,963