1 00:00:00,000 --> 00:00:00,620 2 00:00:00,620 --> 00:00:03,140 >> DAVID J. Malan: Écrivons un programme qui invite l'utilisateur à une chaîne et 3 00:00:03,140 --> 00:00:07,210 alors imprimer cette chaîne caractère pour caractère un par ligne. 4 00:00:07,210 --> 00:00:10,570 Or, dans le passé, nous avons fait probablement avec une notation entre crochets, 5 00:00:10,570 --> 00:00:13,680 traiter efficacement une chaîne est un tableau de caractères. 6 00:00:13,680 --> 00:00:17,200 >> Mais cette fois, nous allons traiter à la place une chaîne pour ce qu'il est vraiment, un 7 00:00:17,200 --> 00:00:18,770 pointeur ou une adresse. 8 00:00:18,770 --> 00:00:22,420 Plus précisément, l'adresse d'un caractère, vraiment l'adresse de la 9 00:00:22,420 --> 00:00:25,740 premier caractère, selon une séquence de personnages que nous connaissons collectivement 10 00:00:25,740 --> 00:00:26,860 comme une chaîne. 11 00:00:26,860 --> 00:00:30,740 >> Voyons d'abord déclarer une chaîne de ce qu'il est vraiment, char *. 12 00:00:30,740 --> 00:00:31,770 Et nous appelons l'art. 13 00:00:31,770 --> 00:00:34,670 Et puis assigner le retour valeur de chaîne get. 14 00:00:34,670 --> 00:00:36,380 >> Disons prochaine faire la vérification d'erreur. 15 00:00:36,380 --> 00:00:42,920 Si s est nulle, nous allons revenir immédiatement de sorte que nous ne faisons pas accidentellement 16 00:00:42,920 --> 00:00:45,630 déréférencer ce pointeur null. 17 00:00:45,630 --> 00:00:49,750 >> Ensuite, nous allons parcourir la caractères de la manière suivante. 18 00:00:49,750 --> 00:00:52,390 Pour int, i obtient 0. 19 00:00:52,390 --> 00:00:55,890 n est égal à la longueur de la chaîne de l'art. 20 00:00:55,890 --> 00:00:58,050 Pour ce faire, tant que i est inférieur à n. 21 00:00:58,050 --> 00:01:00,690 Et à chaque itération, incrémenter i. 22 00:01:00,690 --> 00:01:02,710 >> Et qu'est-ce que nous voulons faire à chaque itération? 23 00:01:02,710 --> 00:01:06,180 Voyons maintenant imprimer sur chaque itération un seul caractère 24 00:01:06,180 --> 00:01:07,910 suivie d'une nouvelle ligne. 25 00:01:07,910 --> 00:01:10,010 Eh bien, ce caractère faire nous voulons imprimer? 26 00:01:10,010 --> 00:01:16,850 Je propose que nous allions à l'adresse qui est égale à la somme de s, plus i. 27 00:01:16,850 --> 00:01:18,390 >> Maintenant, pourquoi cette expression? 28 00:01:18,390 --> 00:01:22,130 Eh bien, rappelons que stocké dans s est la l'adresse du premier caractère 29 00:01:22,130 --> 00:01:23,490 dans notre chaîne, s. 30 00:01:23,490 --> 00:01:27,470 Pendant ce temps, i est incrémenté sur chaque itération afin qu'il démarre à 0, 31 00:01:27,470 --> 00:01:29,590 puis passe à 1, puis passe à 2. 32 00:01:29,590 --> 00:01:33,870 >> En d'autres mots, de plus j'ai effectivement représente l'adresse de l' 33 00:01:33,870 --> 00:01:35,990 le caractère i-ème art. 34 00:01:35,990 --> 00:01:40,830 Donc, si nous allons à cette adresse par voie de l'opérateur *, nous irons à la 35 00:01:40,830 --> 00:01:42,650 i-ième caractère de la chaîne. 36 00:01:42,650 --> 00:01:45,700 Et c'est la valeur qui sera substitué à notre espace réservé, 37 00:01:45,700 --> 00:01:46,840 pour cent C. 38 00:01:46,840 --> 00:01:47,840 >> Disons confirmer autant. 39 00:01:47,840 --> 00:01:51,720 Sauvons, compiler, et exécuter ce programme. 40 00:01:51,720 --> 00:01:55,990 Faire des pointeurs, les pointeurs slash dot. 41 00:01:55,990 --> 00:01:58,780 Et maintenant, je vais lui donner un chaîne comme bonjour. 42 00:01:58,780 --> 00:01:59,600 Entrée. 43 00:01:59,600 --> 00:02:03,770 >> Et en effet, je vois H-E-L-L-O, avec chaque omble sur sa propre ligne. 44 00:02:03,770 --> 00:02:05,410