1 00:00:00,000 --> 00:00:00,620 2 00:00:00,620 --> 00:00:03,140 >> DAVID J. Malan: Imos escribir un programa que solicita ao usuario a unha cadea e 3 00:00:03,140 --> 00:00:07,210 logo proceder a imprimir esta cadea carácter dun personaxe por liña. 4 00:00:07,210 --> 00:00:10,570 Agora, no pasado, tería feito probablemente coa notación de corchetes, 5 00:00:10,570 --> 00:00:13,680 tratar eficazmente unha cadea é un array de caracteres. 6 00:00:13,680 --> 00:00:17,200 >> Pero esta vez, imos tratar en vez unha corda para que realmente é, un 7 00:00:17,200 --> 00:00:18,770 punteiro ou un enderezo. 8 00:00:18,770 --> 00:00:22,420 En concreto, a dirección dun personaxe, en realidade o enderezo do 9 00:00:22,420 --> 00:00:25,740 primeiro carácter nunha secuencia de personaxes que coñecemos colectivamente 10 00:00:25,740 --> 00:00:26,860 como unha cadea. 11 00:00:26,860 --> 00:00:30,740 >> Imos primeiro declarar unha cadea para o que realmente é, char *. 12 00:00:30,740 --> 00:00:31,770 E nós imos chamalo s. 13 00:00:31,770 --> 00:00:34,670 E, a continuación, atribuílo la a devolución valor da secuencia de get. 14 00:00:34,670 --> 00:00:36,380 >> Imos seguinte facer algunha comprobación de erros. 15 00:00:36,380 --> 00:00:42,920 Se s é nulo, imos devolver inmediatamente para que non accidentalmente 16 00:00:42,920 --> 00:00:45,630 desreferenciava que punteiro nulo. 17 00:00:45,630 --> 00:00:49,750 >> A continuación, imos interactuar sobre o carácteres de s como segue. 18 00:00:49,750 --> 00:00:52,390 Para int, i recibe 0. 19 00:00:52,390 --> 00:00:55,890 n é igual á lonxitude da corda de s. 20 00:00:55,890 --> 00:00:58,050 Faino mentres eu sexa menor que n. 21 00:00:58,050 --> 00:01:00,690 E en cada iteración, incrementar i. 22 00:01:00,690 --> 00:01:02,710 >> E o que queremos facer en cada iteración? 23 00:01:02,710 --> 00:01:06,180 Imos agora imprimir en cada iteración un único carácter 24 00:01:06,180 --> 00:01:07,910 seguido por unha nova liña. 25 00:01:07,910 --> 00:01:10,010 Ben, o personaxe facer queremos imprimir? 26 00:01:10,010 --> 00:01:16,850 Propoño que ir ao enderezo que é igual á suma de s máis eu. 27 00:01:16,850 --> 00:01:18,390 >> Agora, por que esta expresión? 28 00:01:18,390 --> 00:01:22,130 Ben, lembre que almacenado en s é o enderezo do primeiro carácter 29 00:01:22,130 --> 00:01:23,490 na nosa cadea, s. 30 00:01:23,490 --> 00:01:27,470 Mentres tanto, eu está a ser incrementado o cada iteración de xeito que comeza en 0, 31 00:01:27,470 --> 00:01:29,590 logo vai a 1, a continuación, vai a 2. 32 00:01:29,590 --> 00:01:33,870 >> Polo tanto, noutras palabras, é máis eu efectivamente representa o enderezo de 33 00:01:33,870 --> 00:01:35,990 o carácter i-th en s. 34 00:01:35,990 --> 00:01:40,830 Entón, se imos ao enderezo por medio de o operador *, estaremos indo ao 35 00:01:40,830 --> 00:01:42,650 i-ésimo carácter dunha cadea. 36 00:01:42,650 --> 00:01:45,700 E ese é o valor que será substituído polo noso espazo reservado, 37 00:01:45,700 --> 00:01:46,840 por cento C. 38 00:01:46,840 --> 00:01:47,840 >> Imos confirmar tanto. 39 00:01:47,840 --> 00:01:51,720 Imos gardar, compilar e executar este programa. 40 00:01:51,720 --> 00:01:55,990 Fai punteiros, punteiros barra de puntos. 41 00:01:55,990 --> 00:01:58,780 E agora eu vou darlle un cadea como Olá 42 00:01:58,780 --> 00:01:59,600 Intro. 43 00:01:59,600 --> 00:02:03,770 >> E, de feito, eu vexo H-E-L-L-O, con Cada carácter na súa propia liña. 44 00:02:03,770 --> 00:02:05,410