1 00:00:00,000 --> 00:00:00,620 2 00:00:00,620 --> 00:00:03,140 >> DAVID J. Malan: Pojďme napsat program, které vyzve uživatele k zadání řetězce a 3 00:00:03,140 --> 00:00:07,210 pak pokračovat vytisknout tento řetězec znak pro znak na každém řádku jeden. 4 00:00:07,210 --> 00:00:10,570 Nyní v minulosti, by jsme to udělali tak, Pravděpodobně se čtvercovým držákem notaci, 5 00:00:10,570 --> 00:00:13,680 efektivní léčbu řetězec je pole znaků. 6 00:00:13,680 --> 00:00:17,200 >> Ale tentokrát, pojďme místo léčbě řetězec na to, co skutečně je, 7 00:00:17,200 --> 00:00:18,770 ukazatel nebo adresu. 8 00:00:18,770 --> 00:00:22,420 Konkrétně, adresa charakter, opravdu adresa 9 00:00:22,420 --> 00:00:25,740 první znak, v pořadí znaky, které jsme společně známe 10 00:00:25,740 --> 00:00:26,860 jako řetězec. 11 00:00:26,860 --> 00:00:30,740 >> Pojďme nejprve deklarovat řetězec pro co to vlastně je, char *. 12 00:00:30,740 --> 00:00:31,770 A budeme říkat to je. 13 00:00:31,770 --> 00:00:34,670 A pak mu přiřadit návrat hodnota get řetězce. 14 00:00:34,670 --> 00:00:36,380 >> Pojďme si udělat nějaké další kontrolu chyb. 15 00:00:36,380 --> 00:00:42,920 Pokud je null, pojďme se okamžitě vrátí tak, že my ne náhodou 16 00:00:42,920 --> 00:00:45,630 dereference, že nulový ukazatel. 17 00:00:45,630 --> 00:00:49,750 >> Další, pojďme iteraci znaky s takto. 18 00:00:49,750 --> 00:00:52,390 Pro int, i dostane 0. 19 00:00:52,390 --> 00:00:55,890 n se rovná délka řetězce s. 20 00:00:55,890 --> 00:00:58,050 Udělej to tak dlouho, dokud i je menší než n.. 21 00:00:58,050 --> 00:01:00,690 A v každé iteraci, zvýšit i. 22 00:01:00,690 --> 00:01:02,710 >> A to, co chceme dělat na každé iteraci? 23 00:01:02,710 --> 00:01:06,180 Pojďme se nyní tisknout na každé iteraci jeden znak 24 00:01:06,180 --> 00:01:07,910 následuje nový řádek. 25 00:01:07,910 --> 00:01:10,010 No, co postava dělat chceme tisknout? 26 00:01:10,010 --> 00:01:16,850 Navrhuji, že jdeme na adresu která se rovná součtu s a i. 27 00:01:16,850 --> 00:01:18,390 >> A teď, proč tento výraz? 28 00:01:18,390 --> 00:01:22,130 No, připomenout, že uložené v s je adresa prvního znaku 29 00:01:22,130 --> 00:01:23,490 v našem řetězci, s. 30 00:01:23,490 --> 00:01:27,470 Mezitím jsem se zvýší na každé iterace tak, že začíná v 0, 31 00:01:27,470 --> 00:01:29,590 pak jde do 1, pak jde do 2. 32 00:01:29,590 --> 00:01:33,870 >> Takže jinými slovy, s navíc i efektivně představuje adresu 33 00:01:33,870 --> 00:01:35,990 i-tý znak v s.. 34 00:01:35,990 --> 00:01:40,830 Takže pokud půjdeme na uvedenou adresu formou operátor *, půjdeme na 35 00:01:40,830 --> 00:01:42,650 i-tý znak v řetězci. 36 00:01:42,650 --> 00:01:45,700 A to je hodnota, která bude nahradit pro náš zástupný symbol, 37 00:01:45,700 --> 00:01:46,840 procent C. 38 00:01:46,840 --> 00:01:47,840 >> Pojďme potvrzení tolik. 39 00:01:47,840 --> 00:01:51,720 Pojďme zachránit, sestavit, a spustit tento program. 40 00:01:51,720 --> 00:01:55,990 Zkontrolujte ukazatele, tečka ukazatele lomítko. 41 00:01:55,990 --> 00:01:58,780 A teď jsem si to dát string jako ahoj. 42 00:01:58,780 --> 00:01:59,600 Enter. 43 00:01:59,600 --> 00:02:03,770 >> A vskutku, vidím, H-E-L-L-O, s každý char na vlastním řádku. 44 00:02:03,770 --> 00:02:05,410