1 00:00:00,000 --> 00:00:00,620 2 00:00:00,620 --> 00:00:03,140 >> DAVID J. MALAN: Vamos escrever um programa que solicita ao usuário para uma string e 3 00:00:03,140 --> 00:00:07,210 em seguida, proceder para imprimir essa string caráter de um personagem por linha. 4 00:00:07,210 --> 00:00:10,570 Agora, no passado, teria feito provavelmente com a notação de colchetes, 5 00:00:10,570 --> 00:00:13,680 tratar eficazmente uma string é um array de caracteres. 6 00:00:13,680 --> 00:00:17,200 >> Mas, desta vez, vamos tratar em vez uma corda para que ele realmente é, um 7 00:00:17,200 --> 00:00:18,770 ponteiro ou um endereço. 8 00:00:18,770 --> 00:00:22,420 Especificamente, o endereço de um personagem, realmente o endereço do 9 00:00:22,420 --> 00:00:25,740 primeiro caractere em uma seqüência de personagens que conhecemos coletivamente 10 00:00:25,740 --> 00:00:26,860 como uma string. 11 00:00:26,860 --> 00:00:30,740 >> Vamos primeiro declarar uma string para o que realmente é, char *. 12 00:00:30,740 --> 00:00:31,770 E nós vamos chamá-lo s. 13 00:00:31,770 --> 00:00:34,670 E, em seguida, atribuí-la a devolução valor da seqüência de get. 14 00:00:34,670 --> 00:00:36,380 >> Vamos próximo fazer alguma verificação de erros. 15 00:00:36,380 --> 00:00:42,920 Se s é nulo, vamos retornar imediatamente para que não acidentalmente 16 00:00:42,920 --> 00:00:45,630 desreferenciava que ponteiro nulo. 17 00:00:45,630 --> 00:00:49,750 >> Em seguida, vamos interagir sobre o caracteres de s como se segue. 18 00:00:49,750 --> 00:00:52,390 Para int, i recebe 0. 19 00:00:52,390 --> 00:00:55,890 n é igual ao comprimento da corda de s. 20 00:00:55,890 --> 00:00:58,050 Faça isso enquanto eu for menor que n. 21 00:00:58,050 --> 00:01:00,690 E em cada iteração, incrementar i. 22 00:01:00,690 --> 00:01:02,710 >> E o que nós queremos fazer em cada iteração? 23 00:01:02,710 --> 00:01:06,180 Vamos agora imprimir em cada iteração um único caractere 24 00:01:06,180 --> 00:01:07,910 seguido por uma nova linha. 25 00:01:07,910 --> 00:01:10,010 Bem, o personagem fazer queremos imprimir? 26 00:01:10,010 --> 00:01:16,850 Proponho que ir para o endereço que é igual à soma de s mais eu. 27 00:01:16,850 --> 00:01:18,390 >> Agora, por que essa expressão? 28 00:01:18,390 --> 00:01:22,130 Bem, lembre-se que armazenado em s é o endereço do primeiro caractere 29 00:01:22,130 --> 00:01:23,490 em nossa string, s. 30 00:01:23,490 --> 00:01:27,470 Enquanto isso, eu está sendo incrementado em cada iteração de modo que começa em 0, 31 00:01:27,470 --> 00:01:29,590 em seguida, vai para 1, em seguida, vai para 2. 32 00:01:29,590 --> 00:01:33,870 >> Portanto, em outras palavras, s mais eu efetivamente representa o endereço de 33 00:01:33,870 --> 00:01:35,990 o caráter i-th em s. 34 00:01:35,990 --> 00:01:40,830 Então, se vamos para o endereço por meio de o operador *, estaremos indo para o 35 00:01:40,830 --> 00:01:42,650 i-ésimo caractere da string. 36 00:01:42,650 --> 00:01:45,700 E esse é o valor que será substituído por nosso espaço reservado, 37 00:01:45,700 --> 00:01:46,840 por cento C. 38 00:01:46,840 --> 00:01:47,840 >> Vamos confirmar tanto. 39 00:01:47,840 --> 00:01:51,720 Vamos salvar, compilar e executar este programa. 40 00:01:51,720 --> 00:01:55,990 Faça ponteiros, ponteiros barra de pontos. 41 00:01:55,990 --> 00:01:58,780 E agora eu vou dar-lhe um string como Olá. 42 00:01:58,780 --> 00:01:59,600 Enter. 43 00:01:59,600 --> 00:02:03,770 >> E, de fato, eu vejo H-E-L-L-O, com cada caractere em sua própria linha. 44 00:02:03,770 --> 00:02:05,410