1 00:00:00,000 --> 00:00:00,410 2 00:00:00,410 --> 00:00:03,130 >> Дэвид Дж. Малан: Вот и получается, что копирование строки, не так 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 >> Давайте обратим внимание на том, что в прошлом внедрение и вырвать этот 8 00:00:17,470 --> 00:00:21,470 линия, строка т равна с, что явно не была достаточной. 9 00:00:21,470 --> 00:00:24,440 Давайте заменим его с линией, которая выглядит, а не, как это. 10 00:00:24,440 --> 00:00:34,020 Строка т получает таНос длины строки из S Plus 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 количество байт с уже занимает, в том числе его нулевое окончание, 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 >> Но если все хорошо, я собираюсь продолжить использовать четыре петли и итерации 28 00:01:30,360 --> 00:01:31,110 следующим образом. 29 00:01:31,110 --> 00:01:36,000 Для внутр я получаю 0, п равных длина строки с. 30 00:01:36,000 --> 00:01:40,350 Я собираюсь сделать это до тех пор, как я это меньше или равно п так, чтобы я 31 00:01:40,350 --> 00:01:44,460 итерации через включительно нуль завершающий знак в с. 32 00:01:44,460 --> 00:01:47,450 >> И на каждой итерации, я собирается увеличить I. 33 00:01:47,450 --> 00:01:52,496 Между тем, внутри этой петли, копирование ы I-ый символ в г-го T, 34 00:01:52,496 --> 00:01:59,310 расположение, достаточно, чтобы сделать т Кронштейн я получает ы кронштейн я. 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