1 00:00:00,000 --> 00:00:00,620 2 00:00:00,620 --> 00:00:03,140 >> DAVID J. MALAN: Scriviamo un programma che chiede all'utente una stringa e 3 00:00:03,140 --> 00:00:07,210 quindi procedere per stampare la stringa carattere per carattere uno per riga. 4 00:00:07,210 --> 00:00:10,570 Ora, in passato, avremmo fatto probabilmente con la notazione parentesi quadra, 5 00:00:10,570 --> 00:00:13,680 efficace trattamento di una stringa è un array di caratteri. 6 00:00:13,680 --> 00:00:17,200 >> Ma questa volta, facciamo invece trattare una stringa per quello che realmente è, un 7 00:00:17,200 --> 00:00:18,770 puntatore o un indirizzo. 8 00:00:18,770 --> 00:00:22,420 In particolare, l'indirizzo di un carattere, in realtà l'indirizzo del 9 00:00:22,420 --> 00:00:25,740 primo carattere, in una sequenza di personaggi che collettivamente conosciamo 10 00:00:25,740 --> 00:00:26,860 come una stringa. 11 00:00:26,860 --> 00:00:30,740 >> Diamo prima dichiarare una stringa per ciò che realmente è, char *. 12 00:00:30,740 --> 00:00:31,770 E che chiameremo s. 13 00:00:31,770 --> 00:00:34,670 E poi assegnare il ritorno valore della stringa get. 14 00:00:34,670 --> 00:00:36,380 >> Facciamo prossimo fare qualche controllo degli errori. 15 00:00:36,380 --> 00:00:42,920 Se s è null, torniamo subito così che facciamo non accidentalmente 16 00:00:42,920 --> 00:00:45,630 dereferenziare che puntatore nullo. 17 00:00:45,630 --> 00:00:49,750 >> Quindi, cerchiamo di iterare l' caratteri s come segue. 18 00:00:49,750 --> 00:00:52,390 Per int, mi viene 0. 19 00:00:52,390 --> 00:00:55,890 n è uguale alla lunghezza della stringa di s. 20 00:00:55,890 --> 00:00:58,050 Fate questo fino a quando i è inferiore a n. 21 00:00:58,050 --> 00:01:00,690 E ad ogni iterazione, incrementare i. 22 00:01:00,690 --> 00:01:02,710 >> E che cosa vogliamo fare su ogni iterazione? 23 00:01:02,710 --> 00:01:06,180 Vediamo ora stampare su ogni iterazione un singolo carattere 24 00:01:06,180 --> 00:01:07,910 seguita da una nuova linea. 25 00:01:07,910 --> 00:01:10,010 Ebbene, che cosa fare di carattere vogliamo stampare? 26 00:01:10,010 --> 00:01:16,850 Propongo che andiamo all'indirizzo che è uguale alla somma di s più i. 27 00:01:16,850 --> 00:01:18,390 >> Ora, perché questa espressione? 28 00:01:18,390 --> 00:01:22,130 Ebbene, ricordano quella memorizzata nel s è la indirizzo del primo carattere 29 00:01:22,130 --> 00:01:23,490 nella nostra stringa, s. 30 00:01:23,490 --> 00:01:27,470 Nel frattempo, i è in aumento su ogni iterazione in modo che inizi a 0, 31 00:01:27,470 --> 00:01:29,590 poi va a 1, poi va a 2. 32 00:01:29,590 --> 00:01:33,870 >> Quindi, in altre parole, s più efficacemente i rappresenta l'indirizzo 33 00:01:33,870 --> 00:01:35,990 il carattere i-esimo in s. 34 00:01:35,990 --> 00:01:40,830 Quindi, se andiamo a tale indirizzo a titolo di l'operatore *, andremo alla 35 00:01:40,830 --> 00:01:42,650 i-esimo carattere della stringa. 36 00:01:42,650 --> 00:01:45,700 E questo è il valore che sarà sostituito per il nostro segnaposto, 37 00:01:45,700 --> 00:01:46,840 cento C. 38 00:01:46,840 --> 00:01:47,840 >> Facciamo confermano tanto. 39 00:01:47,840 --> 00:01:51,720 Salviamo, compilare, e eseguire questo programma. 40 00:01:51,720 --> 00:01:55,990 Fai puntatori, puntatori oblique dot. 41 00:01:55,990 --> 00:01:58,780 E adesso darò un stringa come ciao. 42 00:01:58,780 --> 00:01:59,600 Invio. 43 00:01:59,600 --> 00:02:03,770 >> E in effetti, vedo H-E-L-L-O, con ogni char sulla propria linea. 44 00:02:03,770 --> 00:02:05,410