1 00:00:00,000 --> 00:00:00,620 2 00:00:00,620 --> 00:00:03,140 >> David J. MALAN: Să scrie un program care solicită utilizatorului pentru un șir și 3 00:00:03,140 --> 00:00:07,210 apoi continua pentru a imprima ca șir caracter pentru caracter câte unul pe linie. 4 00:00:07,210 --> 00:00:10,570 Acum, în trecut, ne-ar fi făcut atât de probabil cu notație paranteză, 5 00:00:10,570 --> 00:00:13,680 tratarea în mod eficient un șir este o serie de caractere. 6 00:00:13,680 --> 00:00:17,200 >> Dar de data aceasta, să trateze în loc un șir de ceea ce este de fapt, un 7 00:00:17,200 --> 00:00:18,770 pointer sau o adresă. 8 00:00:18,770 --> 00:00:22,420 Mai exact, adresa unei caracter, într-adevăr adresa 9 00:00:22,420 --> 00:00:25,740 primul caracter, într-o secvență de caractere pe care le cunoaștem în mod colectiv 10 00:00:25,740 --> 00:00:26,860 ca un șir. 11 00:00:26,860 --> 00:00:30,740 >> Să declare în primul rând un șir de ceea ce este de fapt, char *. 12 00:00:30,740 --> 00:00:31,770 Și vom numi aceasta e. 13 00:00:31,770 --> 00:00:34,670 Și apoi atribuie revenirea Valoarea de string GET. 14 00:00:34,670 --> 00:00:36,380 >> Să următor face unele verificarea erorilor. 15 00:00:36,380 --> 00:00:42,920 În cazul în care s este nul, să se întoarcă imediat astfel încât să nu accidental 16 00:00:42,920 --> 00:00:45,630 dereference care pointer nul. 17 00:00:45,630 --> 00:00:49,750 >> Următor, să repeta de-a lungul caracterele din s, după cum urmează. 18 00:00:49,750 --> 00:00:52,390 Pentru Int, i devine 0. 19 00:00:52,390 --> 00:00:55,890 n este egal cu lungimea șirului de s.. 20 00:00:55,890 --> 00:00:58,050 Face acest lucru atât timp cât i este mai mic decât n. 21 00:00:58,050 --> 00:01:00,690 Și pe fiecare iterație, incrementa i. 22 00:01:00,690 --> 00:01:02,710 >> Și ceea ce vrem să face pe fiecare iteratie? 23 00:01:02,710 --> 00:01:06,180 Hai acum imprima pe fiecare iterație un singur caracter 24 00:01:06,180 --> 00:01:07,910 urmată de o nouă linie. 25 00:01:07,910 --> 00:01:10,010 Ei bine, ce personaj face ne-o dorim pentru a imprima? 26 00:01:10,010 --> 00:01:16,850 Propun să mergem la adresa care este egală cu suma s plus i. 27 00:01:16,850 --> 00:01:18,390 >> Acum, de ce expresie? 28 00:01:18,390 --> 00:01:22,130 Ei bine, amintim că stocate în S este adresa primului caracter 29 00:01:22,130 --> 00:01:23,490 în șir nostru, e. 30 00:01:23,490 --> 00:01:27,470 Între timp, i este incrementat pe fiecare iterație, astfel încât acesta începe la 0, 31 00:01:27,470 --> 00:01:29,590 apoi se duce la 1, apoi se duce la 2. 32 00:01:29,590 --> 00:01:33,870 >> Deci, cu alte cuvinte, s plus i eficient reprezintă adresa 33 00:01:33,870 --> 00:01:35,990 caracterul i-lea în s.. 34 00:01:35,990 --> 00:01:40,830 Deci, dacă mergem la acea adresă prin operatorul *, vom merge la 35 00:01:40,830 --> 00:01:42,650 i-lea caracter din șirul. 36 00:01:42,650 --> 00:01:45,700 Și care este valoarea care va fi înlocuit de substituent nostru, 37 00:01:45,700 --> 00:01:46,840 la sută C. 38 00:01:46,840 --> 00:01:47,840 >> Să confirma cât de mult. 39 00:01:47,840 --> 00:01:51,720 Să salvăm, compila, și rula acest program. 40 00:01:51,720 --> 00:01:55,990 Face indicii, indicii slash punct. 41 00:01:55,990 --> 00:01:58,780 Și acum voi da o șir ca salut. 42 00:01:58,780 --> 00:01:59,600 Enter. 43 00:01:59,600 --> 00:02:03,770 >> Și într-adevăr, văd H-E-L-L-O, cu fiecare caracter pe o linie proprie. 44 00:02:03,770 --> 00:02:05,410