1 00:00:00,000 --> 00:00:00,410 2 00:00:00,410 --> 00:00:03,130 >> Дејвид Џ MALAN: Значи излегува дека копирање низа не е скоро како 3 00:00:03,130 --> 00:00:05,750 едноставно како копирање на примитивен, како int или плови. 4 00:00:05,750 --> 00:00:09,190 Впрочем, под хаубата низа е низа карактери. 5 00:00:09,190 --> 00:00:13,130 Значи копирање низа, според тоа, треба да вклучуваат копирање дека целата низа на 6 00:00:13,130 --> 00:00:14,240 карактери. 7 00:00:14,240 --> 00:00:17,470 >> Ајде да го свртиме нашето внимание назад кон тоа последните имплементација и rip од овој 8 00:00:17,470 --> 00:00:21,470 линија, стринг т еднаква s, што јасно е дека не е доволно. 9 00:00:21,470 --> 00:00:24,440 Ајде да се замени со една линија која изгледа, наместо тоа, вака. 10 00:00:24,440 --> 00:00:34,020 Стринг т добива Примерок од стринг должина на Кликнете ОК плус 1 пати поголема од големината на знак. 11 00:00:34,020 --> 00:00:36,320 >> Сега има понуда малку ќе во овој линија код. 12 00:00:36,320 --> 00:00:39,330 Прво, Примерок, кратки за меморија распределба, и 13 00:00:39,330 --> 00:00:40,700 функција не само тоа. 14 00:00:40,700 --> 00:00:44,740 Со оглед на цел број, ви се враќа на адресата на парче меморија на 15 00:00:44,740 --> 00:00:45,960 дека многу бајти. 16 00:00:45,960 --> 00:00:50,090 Во меѓувреме, стринг должина на ОК плус 1 има за цел да покаже дека сакаме како 17 00:00:50,090 --> 00:00:54,690 многу бајти е веќе зазема, вклучувајќи ги и нејзините null терминатор, на 18 00:00:54,690 --> 00:00:57,050 коса црта 0 на крајот на низа. 19 00:00:57,050 --> 00:01:00,170 >> Во меѓувреме, јас не мора да се сеќавам колку е голема знак е, дури и 20 00:01:00,170 --> 00:01:04,340 иако на повеќето системи тоа е едноставно 1 бајт, па јас ќе се јавам големина на знак за 21 00:01:04,340 --> 00:01:08,210 дознаам динамички колку е голема индивидуален карактер е. 22 00:01:08,210 --> 00:01:12,550 Откако множи заедно, ќе се вратам на вкупниот број на бајти што ми треба. 23 00:01:12,550 --> 00:01:14,680 >> Но, што ако не успее да Примерок се врати меморијата ни треба? 24 00:01:14,680 --> 00:01:16,730 Јас најдобро би се провери за што како што следи. 25 00:01:16,730 --> 00:01:23,330 Ако т еднаква на нула, тогаш јас сум прв ќе за бесплатно с, меморијата се врати од GET 26 00:01:23,330 --> 00:01:27,120 стринг, а потоа јас ќе одам да врати 1, за да се означи грешка. 27 00:01:27,120 --> 00:01:30,360 >> Но, ако се е во ред, јас ќе одам да се продолжи да се користи четири јамка и iterate 28 00:01:30,360 --> 00:01:31,110 како што следи. 29 00:01:31,110 --> 00:01:36,000 За int i добие 0, n еднаквите стрингот должина на коментарите. 30 00:01:36,000 --> 00:01:40,350 Одам да го направите ова толку долго како што е помалку од или еднакво на n, така што I 31 00:01:40,350 --> 00:01:44,460 iterate нагоре низ вклучувајќи го и нула раскинувањето лик во ОК. 32 00:01:44,460 --> 00:01:47,450 >> И на секоја итерација, јас сум ќе ми прираст. 33 00:01:47,450 --> 00:01:52,496 Во меѓувреме, во внатрешноста на оваа јамка, копија Кликнете ОК на i-тиот карактер во т на i-тата 34 00:01:52,496 --> 00:01:59,310 локација, доволно е да се направи t заградата јас добива на заградата јас. 41 00:01:59,320 --> 00:02:02,750 >> Ајде сега спаси, состави, и ја извршите оваа нова програма. 42 00:02:02,750 --> 00:02:06,690 Направете копија 1 точка црта копија 1. 43 00:02:06,690 --> 00:02:09,460 И јас ќе кажам нешто како Здраво на сите мали букви. 44 00:02:09,460 --> 00:02:12,280 И за среќа, овој пат ми оригинални останува непроменет. 45 00:02:12,280 --> 00:02:13,660 Здраво на сите мали букви. 46 00:02:13,660 --> 00:02:15,540 Но копија е, всушност, капитализирани. 47 00:02:37,120 --> 00:02:38,963