1 00:00:00,000 --> 00:00:00,410 2 00:00:00,410 --> 00:00:03,130 >> DAVID J. Malan: Tātad izrādās, ka kopēšana virkni ne tuvu nav tik 3 00:00:03,130 --> 00:00:05,750 vienkārši, kā kopējot primitīvi, piemēram, int vai apgrozāmos līdzekļus. 4 00:00:05,750 --> 00:00:09,190 Galu galā, zem pārsega string ir secība rakstzīmes. 5 00:00:09,190 --> 00:00:13,130 Tāpēc kopēšana virkni, tāpēc ir iesaistīt kopēšana ka visu secību 6 00:00:13,130 --> 00:00:14,240 rakstzīmes. 7 00:00:14,240 --> 00:00:17,470 >> Pieņemsim savukārt mūsu uzmanību atpakaļ, ka Pēdējā īstenošanu un izplēst tas 8 00:00:17,470 --> 00:00:21,470 line, string t vienāds s, kas acīmredzami nebija pietiekams. 9 00:00:21,470 --> 00:00:24,440 Pieņemsim aizvietot to ar līniju, kas izskatās, nevis, kā šis. 10 00:00:24,440 --> 00:00:34,020 Stīgu t izpaužas malloc stīgu garumu s plus 1 reizes izmērs char. 11 00:00:34,020 --> 00:00:36,320 >> Tagad tur ir citāts mazliet iet par šo koda rindu. 12 00:00:36,320 --> 00:00:39,330 Pirmkārt, malloc, īstermiņa atmiņa sadalījumu, un 13 00:00:39,330 --> 00:00:40,700 funkcija dara tikai to. 14 00:00:40,700 --> 00:00:44,740 Dots vesels skaitlis, tas atgriežas pie jums ar adrese rieciens atmiņas 15 00:00:44,740 --> 00:00:45,960 ka daudzi baiti. 16 00:00:45,960 --> 00:00:50,090 Tikmēr virknes garums s plus 1 ir domāts, lai norādītu, ka mēs vēlamies, kā 17 00:00:50,090 --> 00:00:54,690 daudzi baiti kā jau tā atradās, tostarp tās null terminatora 18 00:00:54,690 --> 00:00:57,050 slīpsvītru 0 beigās virknes. 19 00:00:57,050 --> 00:01:00,170 >> Tajā pašā laikā, es ne vienmēr atcerēties cik liels simbols ir pat 20 00:01:00,170 --> 00:01:04,340 lai gan lielākajā daļā sistēmas, tas ir vienkārši 1 baitu, tāpēc es aicinu lielumu char uz 21 00:01:04,340 --> 00:01:08,210 izdomāt dinamiski, cik liels individuāls raksturs ir. 22 00:01:08,210 --> 00:01:12,550 Pēc tam, kad reizina kopā, es saņemt atpakaļ Kopējais baitu skaits, kas man ir nepieciešams. 23 00:01:12,550 --> 00:01:14,680 >> Bet ko tad, ja malloc neizdodas atgriezties atmiņu mums vajag? 24 00:01:14,680 --> 00:01:16,730 Es gribētu vislabāk pārbaudīt, ka šādi. 25 00:01:16,730 --> 00:01:23,330 Ja t vienāds null, tad es esmu pirmo reizi gatavojas uz bezmaksas s, atmiņas atpakaļ ar get 26 00:01:23,330 --> 00:01:27,120 stīgu, un tad es esmu gatavojas atgriezties 1, neizsaka kļūda. 27 00:01:27,120 --> 00:01:30,360 >> Bet, ja viss ir labi, es esmu gatavojas turpināt izmantot četrus cilpu un atkārtot 28 00:01:30,360 --> 00:01:31,110 šādi. 29 00:01:31,110 --> 00:01:36,000 Par int man 0, n vienāds virknes garums s. 30 00:01:36,000 --> 00:01:40,350 Es esmu gatavojas darīt to tik ilgi, kamēr man ir ir mazāks par vai vienāds ar n, lai es 31 00:01:40,350 --> 00:01:44,460 atkārtot, līdz ar to ieskaitot null terminējošais raksturs s. 32 00:01:44,460 --> 00:01:47,450 >> Un katrā atkārtojumā, es esmu dodas uz pieauguma i. 33 00:01:47,450 --> 00:01:52,496 Tikmēr iekšpusē šīs cilpas, kopēt s ir i-tā raksturs uz t i-th 34 00:01:52,496 --> 00:01:59,310 vietu, pietiek darīt t kronšteins i izpaužas s kronšteinu i. 41 00:01:59,320 --> 00:02:02,750 >> Pieņemsim tagad glābt, apkopo un palaist šo jauno programmu. 42 00:02:02,750 --> 00:02:06,690 Padarīt kopiju 1 punkts slash eksemplāru 1. 43 00:02:06,690 --> 00:02:09,460 Un es saku kaut ko līdzīgu sveiki visās mazos. 44 00:02:09,460 --> 00:02:12,280 Un par laimi, šoreiz mans oriģināls paliek nemainīgs. 45 00:02:12,280 --> 00:02:13,660 sveiki visās mazos. 46 00:02:13,660 --> 00:02:15,540 Bet kopija ir patiešām kapitalizēti. 47 00:02:37,120 --> 00:02:38,963