1 00:00:00,000 --> 00:00:00,620 2 00:00:00,620 --> 00:00:03,140 >> DAVID J. Malan: Laten we een programma schrijven dat vraagt ​​de gebruiker voor een string en 3 00:00:03,140 --> 00:00:07,210 ga dan naar die string afdrukken karakter voor karakter een per regel. 4 00:00:07,210 --> 00:00:10,570 Nu in het verleden, we zouden hebben gedaan waarschijnlijk met vierkante haakjesnotering, 5 00:00:10,570 --> 00:00:13,680 effectief behandelen van een string is een array van karakters. 6 00:00:13,680 --> 00:00:17,200 >> Maar deze keer, laten we in plaats daarvan behandelen een string voor wat het werkelijk is, een 7 00:00:17,200 --> 00:00:18,770 aanwijzer of een adres. 8 00:00:18,770 --> 00:00:22,420 Specifiek, het adres van een karakter, echt het adres van de 9 00:00:22,420 --> 00:00:25,740 eerste teken in een reeks personages die we collectief weten 10 00:00:25,740 --> 00:00:26,860 als een string. 11 00:00:26,860 --> 00:00:30,740 >> Laten we eerst verklaren een string voor wat het werkelijk is, char *. 12 00:00:30,740 --> 00:00:31,770 En we noemen het is. 13 00:00:31,770 --> 00:00:34,670 En dan toe te wijzen de terugkeer waarde van get string. 14 00:00:34,670 --> 00:00:36,380 >> Laten we het volgende doen wat foutcontrole. 15 00:00:36,380 --> 00:00:42,920 Als s null is, laten we onmiddellijk terug zodat we niet per ongeluk 16 00:00:42,920 --> 00:00:45,630 dereferentie dat null pointer. 17 00:00:45,630 --> 00:00:49,750 >> Vervolgens laten we itereren over de tekens in s als volgt. 18 00:00:49,750 --> 00:00:52,390 Voor int, i krijgt 0. 19 00:00:52,390 --> 00:00:55,890 n gelijk is aan de lengte van de string van s. 20 00:00:55,890 --> 00:00:58,050 Doe dit zolang i kleiner dan n. 21 00:00:58,050 --> 00:01:00,690 En op elke iteratie i verhogen. 22 00:01:00,690 --> 00:01:02,710 >> En wat willen we doen op elke iteratie? 23 00:01:02,710 --> 00:01:06,180 Laten we nu printen op elke iteratie een enkel karakter 24 00:01:06,180 --> 00:01:07,910 gevolgd door een nieuwe regel. 25 00:01:07,910 --> 00:01:10,010 Nou, wat karakter doen we willen drukken? 26 00:01:10,010 --> 00:01:16,850 Ik stel voor dat we naar het adres dat gelijk is aan de som van s plus i. 27 00:01:16,850 --> 00:01:18,390 >> Nu, waarom die uitdrukking? 28 00:01:18,390 --> 00:01:22,130 Nou, herinneren dat opgeslagen in s is de adres van het eerste teken 29 00:01:22,130 --> 00:01:23,490 onze koord, s. 30 00:01:23,490 --> 00:01:27,470 Ondertussen wordt i wordt geïncrementeerd op elke iteratie zodat het begint bij 0, 31 00:01:27,470 --> 00:01:29,590 gaat dan naar 1 gaat dan naar 2. 32 00:01:29,590 --> 00:01:33,870 >> Dus met andere woorden, s plus i effectief vertegenwoordigt het adres 33 00:01:33,870 --> 00:01:35,990 het i-de karakter in s. 34 00:01:35,990 --> 00:01:40,830 Dus als we naar dat adres door middel van de * operator, we gaan naar de 35 00:01:40,830 --> 00:01:42,650 i-teken in de reeks. 36 00:01:42,650 --> 00:01:45,700 En dat is de waarde die zal worden gewisseld voor onze placeholder, 37 00:01:45,700 --> 00:01:46,840 procent C. 38 00:01:46,840 --> 00:01:47,840 >> Laten we bevestigen zo veel. 39 00:01:47,840 --> 00:01:51,720 Laten we het redden, compileren, en Dit programma starten. 40 00:01:51,720 --> 00:01:55,990 Maak pointers, dot slash pointers. 41 00:01:55,990 --> 00:01:58,780 En nu zal ik het eens te string als hallo. 42 00:01:58,780 --> 00:01:59,600 Enter. 43 00:01:59,600 --> 00:02:03,770 >> En inderdaad, ik zie H-E-L-L-O, met elke char op een afzonderlijke regel. 44 00:02:03,770 --> 00:02:05,410