1 00:00:00,000 --> 00:00:00,620 2 00:00:00,620 --> 00:00:03,140 >> DAVID J. MALAN: Vamos a escribir un programa que pide al usuario para una cadena y 3 00:00:03,140 --> 00:00:07,210 a continuación, proceder a imprimir esa cadena carácter a carácter una por línea. 4 00:00:07,210 --> 00:00:10,570 Ahora bien, en el pasado, nos hemos hecho probablemente con notación de corchetes, 5 00:00:10,570 --> 00:00:13,680 el tratamiento eficaz de una cadena es una serie de caracteres. 6 00:00:13,680 --> 00:00:17,200 >> Pero esta vez, vamos a tratar en lugar una cadena como lo que realmente es, un 7 00:00:17,200 --> 00:00:18,770 puntero o una dirección. 8 00:00:18,770 --> 00:00:22,420 Específicamente, la dirección de un carácter, realmente la dirección del 9 00:00:22,420 --> 00:00:25,740 primer carácter, en una secuencia de personajes que conocemos colectivamente 10 00:00:25,740 --> 00:00:26,860 como una cadena. 11 00:00:26,860 --> 00:00:30,740 >> Primero vamos a declarar una cadena para lo que realmente es, char *. 12 00:00:30,740 --> 00:00:31,770 Y lo vamos a llamar es. 13 00:00:31,770 --> 00:00:34,670 Y luego asignarle el retorno valor de la cadena de obtención. 14 00:00:34,670 --> 00:00:36,380 >> Vamos a hacer la próxima comprobación de errores. 15 00:00:36,380 --> 00:00:42,920 Si s es nulo, volvamos inmediatamente por lo que hacemos, no por accidente 16 00:00:42,920 --> 00:00:45,630 eliminar la referencia de ese puntero nulo. 17 00:00:45,630 --> 00:00:49,750 >> A continuación, vamos a repetir las personajes de s de la siguiente manera. 18 00:00:49,750 --> 00:00:52,390 Para int i Obtiene 0. 19 00:00:52,390 --> 00:00:55,890 n es igual a la longitud de la cadena de s. 20 00:00:55,890 --> 00:00:58,050 Haga esto siempre y cuando i es menor que n. 21 00:00:58,050 --> 00:01:00,690 Y en cada iteración, se incrementa i. 22 00:01:00,690 --> 00:01:02,710 >> ¿Y qué es lo que queremos hacer en cada iteración? 23 00:01:02,710 --> 00:01:06,180 Ahora vamos a imprimir por cada iteración un solo carácter 24 00:01:06,180 --> 00:01:07,910 seguido de una nueva línea. 25 00:01:07,910 --> 00:01:10,010 Bueno, ¿qué personaje hacer queremos imprimir? 26 00:01:10,010 --> 00:01:16,850 Propongo que nos vamos a la dirección que es igual a la suma de s plus i. 27 00:01:16,850 --> 00:01:18,390 >> Ahora, ¿por qué esa expresión? 28 00:01:18,390 --> 00:01:22,130 Bueno, recordemos que se almacena en s es el dirección del primer carácter 29 00:01:22,130 --> 00:01:23,490 en nuestra cadena, s. 30 00:01:23,490 --> 00:01:27,470 Mientras tanto, i es ascendente en cada iteración de manera que comience a las 0, 31 00:01:27,470 --> 00:01:29,590 luego pasa a 1, luego va a 2. 32 00:01:29,590 --> 00:01:33,870 >> Así que en otras palabras, s plus i eficaz representa la dirección de 33 00:01:33,870 --> 00:01:35,990 el carácter de orden i en s. 34 00:01:35,990 --> 00:01:40,830 Así que si vamos a esa dirección a través de el operador *, nos va a ir a la 35 00:01:40,830 --> 00:01:42,650 i-ésimo carácter de la cadena. 36 00:01:42,650 --> 00:01:45,700 Y ese es el valor que va a ser sustituido a nuestro marcador de posición, 37 00:01:45,700 --> 00:01:46,840 ciento C. 38 00:01:46,840 --> 00:01:47,840 >> Vamos a confirmar tanto. 39 00:01:47,840 --> 00:01:51,720 Vamos a guardar, compilar y ejecutar este programa. 40 00:01:51,720 --> 00:01:55,990 Hacer punteros, punteros de la raya vertical de puntos. 41 00:01:55,990 --> 00:01:58,780 Y ahora voy a darle una cadena como hola. 42 00:01:58,780 --> 00:01:59,600 Intro. 43 00:01:59,600 --> 00:02:03,770 >> Y, de hecho, veo H-E-L-L-O, con cada Char en su propia línea. 44 00:02:03,770 --> 00:02:05,410