1 00:00:00,000 --> 00:00:00,620 2 00:00:00,620 --> 00:00:03,140 >> David J. MALAN: Kom ons skryf 'n program wat vra die gebruiker vir 'n string en 3 00:00:03,140 --> 00:00:07,210 gaan dan dat die snaar te druk karakter vir karakter een per lyn. 4 00:00:07,210 --> 00:00:10,570 Nou in die verlede, sou ons gedoen het waarskynlik met vierkantige hakienotasie, 5 00:00:10,570 --> 00:00:13,680 effektief behandeling van 'n string is 'n verskeidenheid van die karakters. 6 00:00:13,680 --> 00:00:17,200 >> Maar hierdie keer, laat se plaas behandel 'n string vir wat dit werklik is, 'n 7 00:00:17,200 --> 00:00:18,770 wyser of 'n adres. 8 00:00:18,770 --> 00:00:22,420 Spesifiek, die adres van 'n karakter, regtig die adres van die 9 00:00:22,420 --> 00:00:25,740 eerste karakter in 'n reeks van karakters wat ons gesamentlik weet 10 00:00:25,740 --> 00:00:26,860 as 'n string. 11 00:00:26,860 --> 00:00:30,740 >> Kom ons kyk eers verklaar 'n string vir wat dit werklik is, char *. 12 00:00:30,740 --> 00:00:31,770 En ons sal dit noem is. 13 00:00:31,770 --> 00:00:34,670 En dan wys dit die terugkeer waarde van get string. 14 00:00:34,670 --> 00:00:36,380 >> Kom ons volgende doen sommige foutopsporing. 15 00:00:36,380 --> 00:00:42,920 As s is van nul, laat ons dadelik terug sodat ons nie per ongeluk 16 00:00:42,920 --> 00:00:45,630 dereference dat null pointer. 17 00:00:45,630 --> 00:00:49,750 >> Volgende, laat ons Itereer oor die karakters in s soos volg. 18 00:00:49,750 --> 00:00:52,390 Vir int, ek kry 0. 19 00:00:52,390 --> 00:00:55,890 n is gelyk aan die string lengte van s. 20 00:00:55,890 --> 00:00:58,050 Doen dit so lank as wat ek is minder as n. 21 00:00:58,050 --> 00:01:00,690 En op elke iterasie, inkrementeer i. 22 00:01:00,690 --> 00:01:02,710 >> En wat wil ons doen op elke iterasie? 23 00:01:02,710 --> 00:01:06,180 Kom ons nou druk op elke iterasie 'n enkele karakter 24 00:01:06,180 --> 00:01:07,910 gevolg deur 'n nuwe reël. 25 00:01:07,910 --> 00:01:10,010 Wel, wat karakter doen ons wil druk? 26 00:01:10,010 --> 00:01:16,850 Ek stel voor dat ons gaan na die adres gelyk aan die som van s plus i. 27 00:01:16,850 --> 00:01:18,390 >> Nou, hoekom daardie uitdrukking? 28 00:01:18,390 --> 00:01:22,130 Wel, onthou dat gestoor in s is die adres van die eerste karakter 29 00:01:22,130 --> 00:01:23,490 in ons string, is. 30 00:01:23,490 --> 00:01:27,470 Intussen is ek wat aangevul op elke iterasie sodat dit begin by 0, 31 00:01:27,470 --> 00:01:29,590 gaan dan 1, gaan dan na 2. 32 00:01:29,590 --> 00:01:33,870 >> So met ander woorde, s plus i effektief verteenwoordig die adres van 33 00:01:33,870 --> 00:01:35,990 die i-de karakter in s. 34 00:01:35,990 --> 00:01:40,830 So as ons na daardie adres by wyse van die * operateur, sal ons gaan na die 35 00:01:40,830 --> 00:01:42,650 i-de karakter in die string. 36 00:01:42,650 --> 00:01:45,700 En dit is die waarde wat sal vervang vir ons bevat, 37 00:01:45,700 --> 00:01:46,840 persent C. 38 00:01:46,840 --> 00:01:47,840 >> Kom ons bevestig soveel. 39 00:01:47,840 --> 00:01:51,720 Kom ons spaar, saamstel, en hierdie program. 40 00:01:51,720 --> 00:01:55,990 Maak wysers, dot streep wysers. 41 00:01:55,990 --> 00:01:58,780 En nou, ek sal dit gee 'n string soos Hello. 42 00:01:58,780 --> 00:01:59,600 Betree. 43 00:01:59,600 --> 00:02:03,770 >> En inderdaad, ek sien H-E-L-L-O, met elke kar op sy eie lyn. 44 00:02:03,770 --> 00:02:05,410