1 00:00:00,000 --> 00:00:00,620 2 00:00:00,620 --> 00:00:03,140 >> DAVID J. MALAN: Lad os skrive et program der beder brugeren om en streng og 3 00:00:03,140 --> 00:00:07,210 derefter gå videre til at udskrive denne streng tegn for tegn én per linje. 4 00:00:07,210 --> 00:00:10,570 Nu i fortiden, ville vi have gjort det sandsynligvis med firkantet beslag notation, 5 00:00:10,570 --> 00:00:13,680 effektiv behandling af en streng er en vifte af tegn. 6 00:00:13,680 --> 00:00:17,200 >> Men denne gang, så lad os i stedet behandle en snor for hvad det egentlig er, er en 7 00:00:17,200 --> 00:00:18,770 pointer eller en adresse. 8 00:00:18,770 --> 00:00:22,420 Konkret adressen på en karakter, virkelig adresse 9 00:00:22,420 --> 00:00:25,740 første karakter i en sekvens af tegn, som vi kollektivt kender 10 00:00:25,740 --> 00:00:26,860 som en streng. 11 00:00:26,860 --> 00:00:30,740 >> Lad os først erklære en snor til hvad det egentlig er, char *. 12 00:00:30,740 --> 00:00:31,770 Og vi vil kalde det er. 13 00:00:31,770 --> 00:00:34,670 Og derefter tildele det afkast værdien af ​​get streng. 14 00:00:34,670 --> 00:00:36,380 >> Lad os næste gøre nogle fejlkontrol. 15 00:00:36,380 --> 00:00:42,920 Hvis s er nul, så lad os straks tilbage så at vi ikke ved et uheld 16 00:00:42,920 --> 00:00:45,630 dereference at null-pointer. 17 00:00:45,630 --> 00:00:49,750 >> Næste, lad os gentage over den tegn i s som følger. 18 00:00:49,750 --> 00:00:52,390 For int, jeg får 0. 19 00:00:52,390 --> 00:00:55,890 n er lig med strengen længde s. 20 00:00:55,890 --> 00:00:58,050 Gør dette, så længe jeg er mindre end n. 21 00:00:58,050 --> 00:01:00,690 Og på hver iteration, tilvækst jeg. 22 00:01:00,690 --> 00:01:02,710 >> Og hvad vil vi gøre på hver iteration? 23 00:01:02,710 --> 00:01:06,180 Lad os nu printe ud i hver iteration et enkelt tegn 24 00:01:06,180 --> 00:01:07,910 efterfulgt af en ny linje. 25 00:01:07,910 --> 00:01:10,010 Nå, hvad karakter gør vi ønsker at udskrive? 26 00:01:10,010 --> 00:01:16,850 Jeg foreslår, at vi går til den adresse der er lig med summen af ​​s plus jeg. 27 00:01:16,850 --> 00:01:18,390 >> Nu, hvorfor dette udtryk? 28 00:01:18,390 --> 00:01:22,130 Nå, minde om, at lagret i s er adressen på det første tegn 29 00:01:22,130 --> 00:01:23,490 i vores streng, s. 30 00:01:23,490 --> 00:01:27,470 I mellemtiden er jeg de øges på hver iteration, så den starter ved 0, 31 00:01:27,470 --> 00:01:29,590 derefter går til 1, derefter går til 2.. 32 00:01:29,590 --> 00:01:33,870 >> Så med andre ord, s plus jeg effektivt repræsenterer adressen 33 00:01:33,870 --> 00:01:35,990 det i'te tegn i sek. 34 00:01:35,990 --> 00:01:40,830 Så hvis vi går til denne adresse ved hjælp af den * operatør, vi vil gå til 35 00:01:40,830 --> 00:01:42,650 i'te tegn i strengen. 36 00:01:42,650 --> 00:01:45,700 Og det er den værdi, der vil være i stedet for vores pladsholder, 37 00:01:45,700 --> 00:01:46,840 procent C. 38 00:01:46,840 --> 00:01:47,840 >> Lad os bekræfte så meget. 39 00:01:47,840 --> 00:01:51,720 Lad os gemme, kompilere, og køre dette program. 40 00:01:51,720 --> 00:01:55,990 Foretag pegepinde, dot slash pointers. 41 00:01:55,990 --> 00:01:58,780 Og nu vil jeg give det en streng som hej. 42 00:01:58,780 --> 00:01:59,600 Enter. 43 00:01:59,600 --> 00:02:03,770 >> Og ja, jeg ser H-E-L-L-O, med hver char på sin egen linje. 44 00:02:03,770 --> 00:02:05,410