1 00:00:00,000 --> 00:00:02,670 >> [MUSICAL] 2 00:00:02,670 --> 00:00:11,834 3 00:00:11,834 --> 00:00:13,365 >> ENCEINTE 1: Salut, tout le monde. 4 00:00:13,365 --> 00:00:14,365 Bienvenue à la section. 5 00:00:14,365 --> 00:00:15,700 6 00:00:15,700 --> 00:00:18,700 Belle journée out-- qui est pourquoi, je suis Certes, il ya seulement quatre d'entre vous ici 7 00:00:18,700 --> 00:00:21,180 et pas notre pack d'habitude. 8 00:00:21,180 --> 00:00:22,670 Je l'ai été malade ce week-end. 9 00:00:22,670 --> 00:00:24,294 Donc, je ne dois Starburst pour vous les gars. 10 00:00:24,294 --> 00:00:26,400 Et je peux commencer la toux terriblement long de cette. 11 00:00:26,400 --> 00:00:27,790 Il suffit donc de porter avec moi. 12 00:00:27,790 --> 00:00:30,624 Je vais vraiment essayer et passer à travers cette première, 13 00:00:30,624 --> 00:00:32,290 si, avant, je dois une attaque de toux. 14 00:00:32,290 --> 00:00:33,410 15 00:00:33,410 --> 00:00:37,390 Mais juste être facile sur moi un peu bit-- qui est tout ce que je demande. 16 00:00:37,390 --> 00:00:39,370 17 00:00:39,370 --> 00:00:44,289 >> Donc, notre ordre du jour pour today-- juste un reminder-- votre test est la semaine prochaine. 18 00:00:44,289 --> 00:00:46,830 Je vous ai dit la semaine dernière il ne serait pas vous prendre au dépourvu. 19 00:00:46,830 --> 00:00:47,954 Donc, je vous rappelle encore une fois. 20 00:00:47,954 --> 00:00:49,180 De la semaine prochaine est votre quiz. 21 00:00:49,180 --> 00:00:52,730 À cette fin, la semaine prochaine de section sera beaucoup plus 22 00:00:52,730 --> 00:00:55,180 de-- Je vais essayer de travailler dans une certaine examen. 23 00:00:55,180 --> 00:00:58,130 Donc, si vous les gars pourrait aidez-moi en me faisant parvenir 24 00:00:58,130 --> 00:01:00,990 choses que vous êtes à l'aise avec, que vous êtes inquiet au sujet, 25 00:01:00,990 --> 00:01:03,530 les sujets que vous aimeriez pour me couvrir, ce serait génial. 26 00:01:03,530 --> 00:01:05,740 Donc, je peux essayer de travailler les dans notre section de la semaine prochaine 27 00:01:05,740 --> 00:01:11,540 ou vous envoyer du matériel supplémentaire ou préparation que vous ne pourriez pas obtenir ailleurs. 28 00:01:11,540 --> 00:01:12,150 >> Yeah! 29 00:01:12,150 --> 00:01:13,520 Plus de gens sont à venir! 30 00:01:13,520 --> 00:01:17,320 Je pensais, ai-je fait mal dernier semaine, que personne ne veut revenir? 31 00:01:17,320 --> 00:01:18,065 Je ai peur. 32 00:01:18,065 --> 00:01:18,892 33 00:01:18,892 --> 00:01:21,100 Ainsi, les trois autres que nous allons passer en revue 34 00:01:21,100 --> 00:01:24,850 sont redirection, fichier I / O, et les pointeurs et la mémoire dynamique. 35 00:01:24,850 --> 00:01:29,160 Je suis sûr que vous êtes tous super excités à propos pointers-- sujet favori de tout le monde, 36 00:01:29,160 --> 00:01:31,310 si simple à comprendre. 37 00:01:31,310 --> 00:01:33,130 Je suis sûr que vous avez tous les gars, non? 38 00:01:33,130 --> 00:01:39,510 >> Alors commençons par le commencement, redirection-- ceci est fondamentalement juste un moyen 39 00:01:39,510 --> 00:01:42,920 à contrôler la façon dont vous entrée choses dans votre programme, 40 00:01:42,920 --> 00:01:44,606 comment vous les choses sortie de votre programme. 41 00:01:44,606 --> 00:01:46,980 Les principaux moyens que vous les gars ont été en interaction avec elle 42 00:01:46,980 --> 00:01:51,650 est juste tout au long de norme avec votre écran d'impression ici. 43 00:01:51,650 --> 00:01:55,940 Mais il ya des façons pipe-- comme nous le voyons ici 44 00:01:55,940 --> 00:01:58,980 est l'un de nos genre words-- de conduite que l'information 45 00:01:58,980 --> 00:02:02,850 ou que les données dans un fichier à partir d'un fichier. 46 00:02:02,850 --> 00:02:05,820 Il est juste des façons différentes de faire avancer les choses dans votre programme 47 00:02:05,820 --> 00:02:10,681 et de votre programme, au lieu de il suffit de les imprimer à cet écran 48 00:02:10,681 --> 00:02:12,430 ou en saisissant les choses à partir de la ligne de commande. 49 00:02:12,430 --> 00:02:13,760 50 00:02:13,760 --> 00:02:18,030 >> Alors d'abord un peu supérieure à caret. 51 00:02:18,030 --> 00:02:22,085 Donc output-- il imprime seulement la sortie un fichier au lieu de l'écran. 52 00:02:22,085 --> 00:02:23,620 53 00:02:23,620 --> 00:02:29,500 Donc, si vous aviez quelque chose qui a imprimé "Bonjour, monde!" à l'écran, 54 00:02:29,500 --> 00:02:32,400 si vous le mettez à la place à output.text, qui 55 00:02:32,400 --> 00:02:35,220 crée ce fichier appelé output.text. 56 00:02:35,220 --> 00:02:38,550 Et quand vous l'ouvrez, il va dire "Bonjour, monde!" là-dedans. 57 00:02:38,550 --> 00:02:41,410 Cela peut être super utile si vous avez une tonne d'erreurs 58 00:02:41,410 --> 00:02:43,430 en fait, comme nous le voyons dans celui-ci. 59 00:02:43,430 --> 00:02:46,810 Si vous faites deux caret, ça va imprimer les messages d'erreur. 60 00:02:46,810 --> 00:02:52,090 >> Donc, si vous rencontrez un problème avec compilation, il a beaucoup d'erreurs 61 00:02:52,090 --> 00:02:56,770 et vous enlisement en essayant pour faire défiler dans votre ligne de commande 62 00:02:56,770 --> 00:02:59,110 par tous les, vous pouvez juste les imprimer dans un fichier, 63 00:02:59,110 --> 00:03:02,130 ouvrir ce fichier pour que vous Vous pouvez faire défiler plus facilement. 64 00:03:02,130 --> 00:03:05,160 En fait, je l'habitude qu'un beaucoup quand je le débogage 65 00:03:05,160 --> 00:03:07,970 mes 181 psets pour l'apprentissage de la machine. 66 00:03:07,970 --> 00:03:10,000 Ainsi, il peut être super utile plus tard. 67 00:03:10,000 --> 00:03:18,370 Il est également utile si vous avez un programme qui est peut-être la génération d'une bibliothèque 68 00:03:18,370 --> 00:03:20,430 ou générer un certain ensemble de chaînes, et vous 69 00:03:20,430 --> 00:03:22,846 doivent être en mesure de voir que Ce sont eux générer correctement. 70 00:03:22,846 --> 00:03:23,860 71 00:03:23,860 --> 00:03:25,160 Ceci est la façon de le faire. 72 00:03:25,160 --> 00:03:28,280 >> Donc, si vous les imprimer dans un fichier, vous peut plus facilement examiner eux, non? 73 00:03:28,280 --> 00:03:30,930 Plutôt que d'essayer de faire défiler à travers la ligne de commande. 74 00:03:30,930 --> 00:03:32,740 75 00:03:32,740 --> 00:03:35,820 Et puis une chose à noter est que, avec juste la plus grande 76 00:03:35,820 --> 00:03:40,090 de caret, si vous écrivez à un fichier déjà exists-- 77 00:03:40,090 --> 00:03:44,990 donc comme si nous avons manqué ce premier temps, nous mettons à output.text, 78 00:03:44,990 --> 00:03:49,970 et puis nous avons eu un deuxième programme que ce que le programme imprimé deux 79 00:03:49,970 --> 00:03:54,250 et a fait un supérieur à output.text, elle remplace donc that-- 80 00:03:54,250 --> 00:03:56,715 remplacer ce qui était toujours en ce fichier pour commencer. 81 00:03:56,715 --> 00:03:57,720 82 00:03:57,720 --> 00:04:00,750 >> Donc, si vous voulez ajouter dans un fichier, comme nous le voyons ici, 83 00:04:00,750 --> 00:04:04,779 vous venez de faire deux plus de signes. 84 00:04:04,779 --> 00:04:05,820 Et il ajoutera à elle. 85 00:04:05,820 --> 00:04:06,750 Il ne l'écrasera pas. 86 00:04:06,750 --> 00:04:09,770 Donc, si vous avez besoin d'exécuter plusieurs programmes et le type de garder 87 00:04:09,770 --> 00:04:13,170 trace de ce que sont tous les vous rendant dans un fichier, 88 00:04:13,170 --> 00:04:14,190 qui est une façon de le faire. 89 00:04:14,190 --> 00:04:17,231 Si vous ne vous souciez pas ce qu'il ya dans votre fichier et il est permis d'être écrasé, 90 00:04:17,231 --> 00:04:19,204 vous pouvez simplement utiliser un seul supérieur. 91 00:04:19,204 --> 00:04:20,600 Cela fait-il sens à tout le monde? 92 00:04:20,600 --> 00:04:23,205 93 00:04:23,205 --> 00:04:31,140 >> PUBLIC: Comme point slash bonjour plus que le texte de points de sortie, comme deux fois, 94 00:04:31,140 --> 00:04:34,030 il va juste montrer seulement sur la production texte point un deuxième time-- 95 00:04:34,030 --> 00:04:34,810 >> ENCEINTE 1: Droit. 96 00:04:34,810 --> 00:04:40,450 Donc, il serait fondamentalement juste complètement remplacer ce qui était là pour commencer. 97 00:04:40,450 --> 00:04:44,260 Si ce fichier ici, la output.text déjà 98 00:04:44,260 --> 00:04:48,230 Il existe, en gros ce que vous appelez encore que d'une seule grande 99 00:04:48,230 --> 00:04:51,920 que vous pouvez juste y penser que comme il a remplacé le fichier. 100 00:04:51,920 --> 00:04:54,824 Comme lorsque vous enregistrez un document Word document et vous ne sauvegarder que, 101 00:04:54,824 --> 00:04:57,365 et vous gardez le même nom, et il écrase complètement it-- 102 00:04:57,365 --> 00:04:58,680 ceci est la même chose. 103 00:04:58,680 --> 00:05:00,380 104 00:05:00,380 --> 00:05:03,550 Quelqu'un at-il des questions sur juste sortie dans un fichier? 105 00:05:03,550 --> 00:05:05,051 106 00:05:05,051 --> 00:05:05,550 Impressionnant. 107 00:05:05,550 --> 00:05:11,440 >> Alors, évidemment, si vous inversez le direction de la flèche, il peut faire entrée. 108 00:05:11,440 --> 00:05:13,090 109 00:05:13,090 --> 00:05:19,960 Alors, quand vous avez eu comme César ou Visioneer 110 00:05:19,960 --> 00:05:23,195 et vous avez eu à l'entrée de quelque chose, vous aviez un argument de ligne de commande 111 00:05:23,195 --> 00:05:24,960 en fait ce que l'entrée. 112 00:05:24,960 --> 00:05:27,410 Ceci est une autre façon de le faire. 113 00:05:27,410 --> 00:05:30,520 Ainsi, au lieu d'attendre pour une invite de commande, 114 00:05:30,520 --> 00:05:33,800 comme lorsque vous avez demandé pour votre message dans César ou Visioneer, 115 00:05:33,800 --> 00:05:36,490 si vous aviez un fichier texte qui a eu votre message, 116 00:05:36,490 --> 00:05:38,280 vous pouvez simplement taper dedans. 117 00:05:38,280 --> 00:05:44,930 >> Donc, si cela était comme point slash César 3 moins de texte d'entrée de flèche, qui 118 00:05:44,930 --> 00:05:47,240 est votre message, que irait très bien. 119 00:05:47,240 --> 00:05:51,310 120 00:05:51,310 --> 00:05:54,020 Lorsque votre programme César fait demandé pour l'entrée de l'utilisateur, 121 00:05:54,020 --> 00:05:57,360 il aurait déjà parce que vous avez tapé dans ce fichier. 122 00:05:57,360 --> 00:05:58,830 Voilà une autre façon. 123 00:05:58,830 --> 00:06:02,445 Juste un revers de output-- il suffit de saisir vos données. 124 00:06:02,445 --> 00:06:04,570 125 00:06:04,570 --> 00:06:06,680 >> Et puis le dernier est conduite. 126 00:06:06,680 --> 00:06:07,780 Donc plutôt cool de celui-ci. 127 00:06:07,780 --> 00:06:09,890 Parce qu'il vous permet de prendre la sortie d'un 128 00:06:09,890 --> 00:06:13,695 programme et le mettre comme entrée d'un autre programme. 129 00:06:13,695 --> 00:06:15,250 130 00:06:15,250 --> 00:06:18,630 Je ne sais pas si l'un de vous joué avec le déchiffrer 131 00:06:18,630 --> 00:06:20,590 CS50 qui peut avoir vous donné, mais il serait 132 00:06:20,590 --> 00:06:27,380 vous permettent de prendre un certain échantillon déposer, tapez-le dans votre cryptage, 133 00:06:27,380 --> 00:06:30,350 puis à partir de là saisir que dans votre décryptage 134 00:06:30,350 --> 00:06:32,470 pour vous assurer qu'il est avéré que le même. 135 00:06:32,470 --> 00:06:34,050 Donc, il est un peu comme trois voies en boucle. 136 00:06:34,050 --> 00:06:38,400 137 00:06:38,400 --> 00:06:39,423 Allez-y. 138 00:06:39,423 --> 00:06:41,785 >> PUBLIC: Si un programme a plusieurs entrées, 139 00:06:41,785 --> 00:06:47,646 est-il un moyen de dire ce qui entrée d'utiliser le fichier de texte ou la sortie pour? 140 00:06:47,646 --> 00:06:49,325 >> ENCEINTE 1: Il a de multiples entrées. 141 00:06:49,325 --> 00:06:52,190 142 00:06:52,190 --> 00:07:00,430 Quel que soit le déposer votre input-- quand il est pour demander l'avis que la première fois, il est 143 00:07:00,430 --> 00:07:03,240 va assumer, je pense, il est aller au tuyau dans l'ensemble du dossier. 144 00:07:03,240 --> 00:07:03,979 145 00:07:03,979 --> 00:07:07,145 Donc, si vous avez plusieurs entrées, vous êtes va être conduites dans plusieurs fichiers. 146 00:07:07,145 --> 00:07:08,190 147 00:07:08,190 --> 00:07:12,390 Donc, si vous vous demandez messages trois fois dans votre code, 148 00:07:12,390 --> 00:07:15,230 vous allez être mise dans trois dossiers différents. 149 00:07:15,230 --> 00:07:15,980 Et il devient fou. 150 00:07:15,980 --> 00:07:18,188 Et vous ne devriez pas avoir à inquiéter à ce sujet en ce moment. 151 00:07:18,188 --> 00:07:19,150 Mais qui est l'idée. 152 00:07:19,150 --> 00:07:20,680 153 00:07:20,680 --> 00:07:26,822 >> Donc oui, tuyau est juste sortie d'un programme utilise l'entrée dans l'autre. 154 00:07:26,822 --> 00:07:27,665 Tout le monde il bon? 155 00:07:27,665 --> 00:07:28,565 156 00:07:28,565 --> 00:07:29,065 Laisser refroidir. 157 00:07:29,065 --> 00:07:30,170 158 00:07:30,170 --> 00:07:30,932 Dáccord. 159 00:07:30,932 --> 00:07:32,890 Vous aurez probablement pas d'en faire trop avec elle. 160 00:07:32,890 --> 00:07:35,670 Mais vous devez comprendre façons dont vous pouvez l'utiliser. 161 00:07:35,670 --> 00:07:38,910 Et il ya des cas qui vous voudrez peut-être utiliser. 162 00:07:38,910 --> 00:07:44,590 >> Donc, je dépose / O- Je sais ce que vous êtes saying-- nous sommes habitués à la lecture de 163 00:07:44,590 --> 00:07:50,500 et par écrit à notre écran il, qui est la norme dans et hors norme. 164 00:07:50,500 --> 00:07:54,370 Et qui est ce que vous les gars ont été faire depuis le début de la classe ici. 165 00:07:54,370 --> 00:07:58,220 Mais vous pouvez également lire et écrire des fichiers, qui est de tous les fichiers I / O- si le fichier d'entrée, 166 00:07:58,220 --> 00:07:59,850 sortie est tout ce qu'elle représente. 167 00:07:59,850 --> 00:08:00,930 168 00:08:00,930 --> 00:08:04,360 Donc, cela signifie essentiellement que vous pouvez stocker vos données. 169 00:08:04,360 --> 00:08:08,460 >> Quand vous venez d'imprimer à la écran, il est fondamentalement disparu, non? 170 00:08:08,460 --> 00:08:12,507 Dès que vous faites "Bonjour monde "et exécuter" Bonjour tout le monde " 171 00:08:12,507 --> 00:08:14,090 il affiche "Bonjour tout le monde" à l'écran. 172 00:08:14,090 --> 00:08:16,370 Mais vous ne pouvez pas vraiment faire quelque chose avec elle à partir de là. 173 00:08:16,370 --> 00:08:18,950 Si vous stockez dans un texte fichier, puis tout à coup 174 00:08:18,950 --> 00:08:22,789 vous avez ces données que vous êtes autorisé de manipuler ou de le mettre dans un fichier, 175 00:08:22,789 --> 00:08:24,080 ou le mettre dans un programme plus tard. 176 00:08:24,080 --> 00:08:26,370 177 00:08:26,370 --> 00:08:29,290 L'une des raisons pourquoi nous le faisons est juste 178 00:08:29,290 --> 00:08:31,560 un moyen pour stocker des données pour une utilisation ultérieure. 179 00:08:31,560 --> 00:08:34,790 180 00:08:34,790 --> 00:08:37,279 >> Je dois quelques étapes ici juste marcher dans la norme 181 00:08:37,279 --> 00:08:39,450 I / O. Dans la première étape, vous besoin de créer une référence 182 00:08:39,450 --> 00:08:43,480 le fichier avec tous bouchons fichier étoile. 183 00:08:43,480 --> 00:08:45,740 Cela crée un pointeur vers un fichier. 184 00:08:45,740 --> 00:08:48,080 185 00:08:48,080 --> 00:08:49,650 Alors vous voulez ouvrir. 186 00:08:49,650 --> 00:08:52,940 Et vous dites, littéralement, juste fichier est égal à la fonction fopen. 187 00:08:52,940 --> 00:08:57,400 Et cela va revenir un pointeur vers le fichier que vous venez d'ouvrir. 188 00:08:57,400 --> 00:08:59,610 189 00:08:59,610 --> 00:09:01,460 Je l'ai vu un couple de vous gars aux heures de bureau. 190 00:09:01,460 --> 00:09:07,400 >> Mais l'une des choses est pointeurs remember-- 191 00:09:07,400 --> 00:09:10,409 peut être une adresse ou nulle, non? 192 00:09:10,409 --> 00:09:12,700 Si jamais nous avons un cas où quelque chose peut retourner null, 193 00:09:12,700 --> 00:09:14,990 qu'est-ce que nous avons à faire avant que nous utilisons? 194 00:09:14,990 --> 00:09:16,220 195 00:09:16,220 --> 00:09:19,000 Nous devons vérifier si il est nul ou pas, non? 196 00:09:19,000 --> 00:09:23,600 Parce que certains d'entre vous ont peut-être eu la question où tout objet 197 00:09:23,600 --> 00:09:26,110 a été d'être renvoyé en petits groupes était nulle. 198 00:09:26,110 --> 00:09:28,170 Vous avez essayé d'effectuer une fonction sur elle. 199 00:09:28,170 --> 00:09:29,770 Et votre site informatique défaut. 200 00:09:29,770 --> 00:09:30,725 Droit? 201 00:09:30,725 --> 00:09:33,640 Je parie que certains d'entre vous peut avoir eu ce problème. 202 00:09:33,640 --> 00:09:38,890 >> Donc, avec fopen, fopen sera soit renvoyer un pointeur vers le fichier, 203 00:09:38,890 --> 00:09:41,200 ou si quelque chose va mal, il va retourner null. 204 00:09:41,200 --> 00:09:45,980 Donc, vous devez toujours vérifier qu'il n'a pas retourné null 205 00:09:45,980 --> 00:09:47,880 avant d'essayer de faire autre chose. 206 00:09:47,880 --> 00:09:49,110 207 00:09:49,110 --> 00:09:51,974 Cela ressemble à un paradigme norme que vous allez avoir besoin ici. 208 00:09:51,974 --> 00:09:54,390 Si jamais il ya une chance que quelque chose pourrait null, 209 00:09:54,390 --> 00:09:56,590 assurez-vous qu'il ne pas avant de poursuivre. 210 00:09:56,590 --> 00:09:58,911 Sinon, vous allez pour obtenir de belles fautes site. 211 00:09:58,911 --> 00:10:00,410 Et personne ne veut les traiter. 212 00:10:00,410 --> 00:10:03,180 213 00:10:03,180 --> 00:10:06,410 >> Donc, comme nous le voyons ici, le premier argument est juste le chemin vers le fichier. 214 00:10:06,410 --> 00:10:09,380 Si ce fichier existe pas, il va créer ce fichier. 215 00:10:09,380 --> 00:10:10,713 Et il va juste être vide. 216 00:10:10,713 --> 00:10:10,789 217 00:10:10,789 --> 00:10:13,080 Et puis le second argument est le mode que vous voulez. 218 00:10:13,080 --> 00:10:14,610 Voulons-nous de lire ce fichier? 219 00:10:14,610 --> 00:10:15,560 Voulez-vous écrire de lui? 220 00:10:15,560 --> 00:10:16,476 Voulez-vous ajouter? 221 00:10:16,476 --> 00:10:17,600 222 00:10:17,600 --> 00:10:20,670 Donc en fait ce que je viens dit-- si existe pas le fichier 223 00:10:20,670 --> 00:10:23,400 et vous essayez de lire à partir de , il va lever une erreur. 224 00:10:23,400 --> 00:10:26,890 Si le fichier name-- comme si file.text existe pas encore 225 00:10:26,890 --> 00:10:29,250 et vous voulez écrire pour cela, il créera 226 00:10:29,250 --> 00:10:33,110 un fichier vide appelé file.text pour vous. 227 00:10:33,110 --> 00:10:36,612 Et si vous voulez ajouter, vous devriez faire la même chose. 228 00:10:36,612 --> 00:10:38,081 Est-ce logique? 229 00:10:38,081 --> 00:10:40,580 Si vous essayez de lire un fichier qui ne existe pas encore, 230 00:10:40,580 --> 00:10:41,590 il jettera une erreur. 231 00:10:41,590 --> 00:10:44,340 Sinon, il va créer le fichier pour faire ce que vous voulez il. 232 00:10:44,340 --> 00:10:45,970 233 00:10:45,970 --> 00:10:46,470 Laisser refroidir. 234 00:10:46,470 --> 00:10:47,510 235 00:10:47,510 --> 00:10:48,880 Maintenant, nous pouvons lire dans le fichier. 236 00:10:48,880 --> 00:10:52,570 Et cela est juste un peu d'aller à travers les différentes fonctions 237 00:10:52,570 --> 00:10:58,980 que nous avons pour le fichier I / O. Cette volonté être nécessaire dans l'ensemble de processeurs de cette semaine, 238 00:10:58,980 --> 00:11:00,505 si je me souviens bien. 239 00:11:00,505 --> 00:11:02,880 Oui, il sera absolument nécessaire dans l'ensemble de processeurs de cette semaine. 240 00:11:02,880 --> 00:11:04,260 241 00:11:04,260 --> 00:11:07,010 Donc fgetc retourne le caractère suivant. 242 00:11:07,010 --> 00:11:08,350 243 00:11:08,350 --> 00:11:10,300 fgets renvoie juste une ligne de texte. 244 00:11:10,300 --> 00:11:11,790 245 00:11:11,790 --> 00:11:14,610 Il reviendra tout à une nouvelle ligne, et il se brisera. 246 00:11:14,610 --> 00:11:15,950 247 00:11:15,950 --> 00:11:18,700 Donc fread lit un certain nombre d'octets et les place 248 00:11:18,700 --> 00:11:20,700 dans un tableau, qui est quelque chose que vous pourriez 249 00:11:20,700 --> 00:11:25,485 voulez faire avec re-size-- pourrait être utile. 250 00:11:25,485 --> 00:11:26,550 251 00:11:26,550 --> 00:11:29,290 >> Combien de personnes ont lu la spécification pset, au fait? 252 00:11:29,290 --> 00:11:30,980 253 00:11:30,980 --> 00:11:32,261 Dáccord. 254 00:11:32,261 --> 00:11:32,760 [Inaudible] 255 00:11:32,760 --> 00:11:35,380 256 00:11:35,380 --> 00:11:36,580 >> ENCEINTE 1: OK. 257 00:11:36,580 --> 00:11:37,530 Bien. 258 00:11:37,530 --> 00:11:41,940 Certainement lire that-- il est un ensemble de processeurs plaisir. 259 00:11:41,940 --> 00:11:51,320 Vous arrivez à récupérer une mémoire supprimé card-- vraiment excitant quand cela fonctionne. 260 00:11:51,320 --> 00:11:54,100 Mais certainement, commencer à lire cela. 261 00:11:54,100 --> 00:11:56,280 Venez me parler si vous avez des questions à ce sujet. 262 00:11:56,280 --> 00:11:59,290 >> OK, donc comme je le disais, fread lit un certain nombre d'octets. 263 00:11:59,290 --> 00:12:01,340 264 00:12:01,340 --> 00:12:03,590 Voilà un nombre arbitraire que vous allez définir. 265 00:12:03,590 --> 00:12:05,990 266 00:12:05,990 --> 00:12:08,260 Et puis fseek seulement se déplace à une certaine position. 267 00:12:08,260 --> 00:12:11,150 Alors peut-être vous ne vous souciez pas sur les 10 octets suivants. 268 00:12:11,150 --> 00:12:12,880 Vous voulez juste pour avancer. 269 00:12:12,880 --> 00:12:14,030 Vous ne vous souciez pas de ceux-là. 270 00:12:14,030 --> 00:12:16,280 Vous voulez lire à partir de l'octet 11. 271 00:12:16,280 --> 00:12:18,252 fseek vous permet de faire cela. 272 00:12:18,252 --> 00:12:20,710 Donc, il vous permet d'être sélectif sur ce que vous lisez. 273 00:12:20,710 --> 00:12:25,880 Parce que fgetc, fgets, et fread lecture d'un certain endroit dans le fichier. 274 00:12:25,880 --> 00:12:27,260 275 00:12:27,260 --> 00:12:35,090 >> Une façon de penser à ce sujet est si cette est notre fichier, lorsque vous ouvrez pour la première, 276 00:12:35,090 --> 00:12:41,140 vous avez cette position dans le fichier qui commence au début. 277 00:12:41,140 --> 00:12:45,040 Chaque fois que vous appelez fgetc, fgetf, ou fread, 278 00:12:45,040 --> 00:12:48,875 il va commencer à partir de cette position marqueur. 279 00:12:48,875 --> 00:12:51,340 280 00:12:51,340 --> 00:12:55,245 Disons que vous voulez juste lire cette partie de la mémoire ici. 281 00:12:55,245 --> 00:12:56,300 282 00:12:56,300 --> 00:12:57,960 Vous ne pouvez pas appeler juste. 283 00:12:57,960 --> 00:13:02,430 Vous devez chercher ici et puis lire à partir de là 284 00:13:02,430 --> 00:13:06,540 ou lire, obtient, ou getc, en fonction de ce que vous voulez. 285 00:13:06,540 --> 00:13:09,310 Donc chercher vous permet juste de sauter des parties de la mémoire. 286 00:13:09,310 --> 00:13:11,590 Et qui est la seule Ainsi, vous pouvez sauter les choses 287 00:13:11,590 --> 00:13:14,012 sans les lire dans votre tampon. 288 00:13:14,012 --> 00:13:15,470 Cela fait-il sens à tout le monde? 289 00:13:15,470 --> 00:13:21,110 290 00:13:21,110 --> 00:13:24,780 >> De toute évidence, il ya une beaucoup de ici-- parallèle 291 00:13:24,780 --> 00:13:27,780 notre redirection sortie ou d'entrée, vous avez lire et à écrire. 292 00:13:27,780 --> 00:13:31,800 Donc fputc écrit juste un caractère dans le fichier. 293 00:13:31,800 --> 00:13:33,655 fputs écrit une ligne. 294 00:13:33,655 --> 00:13:35,030 295 00:13:35,030 --> 00:13:37,420 Fprintf imprime une sortie formatée. 296 00:13:37,420 --> 00:13:41,190 Donc si vous avez des onglets, ou l'espace, ou autres joyeusetés. 297 00:13:41,190 --> 00:13:44,180 Et puis fwrite écrit quelques tableau d'octets dans un fichier. 298 00:13:44,180 --> 00:13:48,860 Voilà donc la même manière fwrite et fread sont analogues 299 00:13:48,860 --> 00:13:57,550 fgets opposites--, fputs, et puis beaucoup fputc et fgetc-- 300 00:13:57,550 --> 00:14:00,710 des fous, des choses rapides. 301 00:14:00,710 --> 00:14:05,300 >> Tout type de conserver cette handy-- vous aurez des moments différents 302 00:14:05,300 --> 00:14:08,680 où peut-être vous voulez juste un caractère à la fois. 303 00:14:08,680 --> 00:14:09,890 Peut-être que vous voulez une ligne entière. 304 00:14:09,890 --> 00:14:14,320 Avec votre dictionnaire pset-- qui est à deux psets, 305 00:14:14,320 --> 00:14:19,690 Je crois, nous vous donnons un ensemble dictionnaire dans un format de texte 306 00:14:19,690 --> 00:14:22,252 qui a chaque mot séparées par une ligne. 307 00:14:22,252 --> 00:14:24,210 Donc, si vous voulez lire en un mot à la fois, 308 00:14:24,210 --> 00:14:31,769 que pourriez-vous utiliser si vous lisez et ils sont tous séparés sur de nouvelles lignes, 309 00:14:31,769 --> 00:14:33,310 et vous voulez juste un mot à la fois? 310 00:14:33,310 --> 00:14:35,320 311 00:14:35,320 --> 00:14:36,040 >> Public: fgets 312 00:14:36,040 --> 00:14:36,748 >> ENCEINTE 1: Droit. 313 00:14:36,748 --> 00:14:39,960 Fgets-- parce que renvoie tout ce qui est sur la même ligne. 314 00:14:39,960 --> 00:14:42,750 Et si chaque mot est son propre ligne, nous pouvons utiliser fgets. 315 00:14:42,750 --> 00:14:44,511 316 00:14:44,511 --> 00:14:45,010 Laisser refroidir. 317 00:14:45,010 --> 00:14:47,290 Cela fait-il sens, tout le monde? 318 00:14:47,290 --> 00:14:48,020 Cool? 319 00:14:48,020 --> 00:14:50,020 Oui, nous allons arriver à la partie la plus amusante avec des pointeurs 320 00:14:50,020 --> 00:14:51,728 très bientôt, où vous arriver à faire un peu de maths. 321 00:14:51,728 --> 00:14:52,776 Et il va être génial. 322 00:14:52,776 --> 00:14:55,690 323 00:14:55,690 --> 00:14:57,740 >> Dernière step-- fermer votre fichier. 324 00:14:57,740 --> 00:15:01,090 Avec tant de choses ici, l'un de nos paradigmes 325 00:15:01,090 --> 00:15:03,550 est si elle peut revenir null, null vérifier. 326 00:15:03,550 --> 00:15:06,160 Si vous ouvrez quelque chose, vous feriez mieux de la fermer. 327 00:15:06,160 --> 00:15:10,419 OK, si vous n'êtes pas terminé jusqu'à ce que vous êtes fait, sauf si vous avez fermé il. 328 00:15:10,419 --> 00:15:12,585 Un peu comme il est pas fini jusqu'à ce que la grosse dame chante. 329 00:15:12,585 --> 00:15:14,130 Voilà comme la fermeture de votre fichier. 330 00:15:14,130 --> 00:15:16,860 331 00:15:16,860 --> 00:15:19,190 Comme il est dit ici, juste pour rappel, toujours 332 00:15:19,190 --> 00:15:21,750 ouvrez votre fichier avant que vous soyez lecture ou l'écriture il. 333 00:15:21,750 --> 00:15:24,450 Et toujours la fermer si vous avez ouvert. 334 00:15:24,450 --> 00:15:25,460 Bien? 335 00:15:25,460 --> 00:15:25,960 Laisser refroidir. 336 00:15:25,960 --> 00:15:26,835 >> Alors, voici un exemple. 337 00:15:26,835 --> 00:15:29,250 338 00:15:29,250 --> 00:15:34,330 Donc tiny-- Je ne sais pas si vous les gars peuvent voir très bien. 339 00:15:34,330 --> 00:15:36,805 Si seulement nous pouvions augmenter la luminosité d'une certaine manière. 340 00:15:36,805 --> 00:15:40,430 341 00:15:40,430 --> 00:15:45,030 Permettez-moi de réellement le faire si je le peux. 342 00:15:45,030 --> 00:15:48,020 343 00:15:48,020 --> 00:15:51,470 OK, les gars vous ne pouvez pas vraiment voir que tout, pouvez-vous? 344 00:15:51,470 --> 00:15:52,905 OK, nous allons le faire, alors. 345 00:15:52,905 --> 00:16:35,094 346 00:16:35,094 --> 00:16:35,594 [Inaudible] 347 00:16:35,594 --> 00:16:56,670 348 00:16:56,670 --> 00:16:58,605 >> Je suppose que cela est beaucoup mieux à voir. 349 00:16:58,605 --> 00:17:17,330 350 00:17:17,330 --> 00:17:19,455 Quelqu'un peut-il voir où mon souris a est la question? 351 00:17:19,455 --> 00:17:22,837 Ah, là, il est-- quelles luttes! 352 00:17:22,837 --> 00:17:48,910 353 00:17:48,910 --> 00:17:49,520 >> Dáccord. 354 00:17:49,520 --> 00:17:53,845 Fondamentalement, les gars doivent avoir genre d'une idée de ce que cela fait. 355 00:17:53,845 --> 00:17:56,740 356 00:17:56,740 --> 00:17:57,600 Il est pas parfait. 357 00:17:57,600 --> 00:17:58,851 358 00:17:58,851 --> 00:18:02,425 Mais je préfère expliquer que passer plus de temps à essayer de le formater correctement. 359 00:18:02,425 --> 00:18:03,610 360 00:18:03,610 --> 00:18:07,280 Fondamentalement, comme vous le voyez ici, nous commençons par ouvrir le fichier. 361 00:18:07,280 --> 00:18:09,620 Et nous avons une certaine fichier de base de données que nous sommes 362 00:18:09,620 --> 00:18:12,300 ouverture qui dit que ce sont nos étudiants. 363 00:18:12,300 --> 00:18:14,020 Et nous allons écrire. 364 00:18:14,020 --> 00:18:15,060 365 00:18:15,060 --> 00:18:17,720 Alors bien sûr, null. 366 00:18:17,720 --> 00:18:19,650 Donc, nous devons vérifier pour nulle. 367 00:18:19,650 --> 00:18:22,930 Et puis si il est pas null, nous passons par. 368 00:18:22,930 --> 00:18:25,660 Et comme vous le voyez, nous sommes une boucle à travers ici. 369 00:18:25,660 --> 00:18:26,960 Il ya des étudiants. 370 00:18:26,960 --> 00:18:30,520 Les étudiants sont hachage définie comme trois. 371 00:18:30,520 --> 00:18:34,060 Et ce que nous faisons est que nous sommes imprimer le fichier, non? 372 00:18:34,060 --> 00:18:36,975 Alors qu'est-ce qu'on imprime sur notre fichier? 373 00:18:36,975 --> 00:18:47,040 374 00:18:47,040 --> 00:18:48,906 >> PUBLIC: Les scores qui sont dans le tableau? 375 00:18:48,906 --> 00:18:49,680 >> ENCEINTE 1: Ouais. 376 00:18:49,680 --> 00:18:50,980 Les scores qui sont en la array-- exactement. 377 00:18:50,980 --> 00:18:53,050 Donc, nous ouvrons cette fichier de base de données, qui 378 00:18:53,050 --> 00:18:56,040 Je suppose, est une sorte de la base de notes. 379 00:18:56,040 --> 00:19:01,100 Et nous ne faisons que l'impression de la scores de chaque élève à ce fichier. 380 00:19:01,100 --> 00:19:02,140 Cool? 381 00:19:02,140 --> 00:19:02,640 Bon. 382 00:19:02,640 --> 00:19:03,811 383 00:19:03,811 --> 00:19:04,310 Impressionnant. 384 00:19:04,310 --> 00:19:05,100 Dáccord. 385 00:19:05,100 --> 00:19:06,950 Revenons to-- 386 00:19:06,950 --> 00:19:08,646 >> PUBLIC: Je voudrais poser une question rapide. 387 00:19:08,646 --> 00:19:11,570 Est ce que le printf pas dans la boucle? 388 00:19:11,570 --> 00:19:12,870 Voilà juste dans la boucle si? 389 00:19:12,870 --> 00:19:14,370 ENCEINTE 1: Non, il est dans la boucle. 390 00:19:14,370 --> 00:19:16,150 391 00:19:16,150 --> 00:19:18,810 Je ne peux pas voir ma souris très bien ici. 392 00:19:18,810 --> 00:19:21,359 Donc, je suis mal à format correctement. 393 00:19:21,359 --> 00:19:22,525 Ce support devrait avoir disparu. 394 00:19:22,525 --> 00:19:23,610 395 00:19:23,610 --> 00:19:25,130 Il devrait être ici. 396 00:19:25,130 --> 00:19:26,605 Ceci est ce qui est dans votre boucle. 397 00:19:26,605 --> 00:20:10,680 398 00:20:10,680 --> 00:20:11,180 Là. 399 00:20:11,180 --> 00:20:12,160 Maintenant, il est joli. 400 00:20:12,160 --> 00:20:16,720 Voilà donc comment il devrait être: sauf pour ce dernier support que je licenciés. 401 00:20:16,720 --> 00:20:17,220 Dáccord. 402 00:20:17,220 --> 00:20:19,491 Cela fait-il sens à tout le monde? 403 00:20:19,491 --> 00:20:19,990 Dáccord. 404 00:20:19,990 --> 00:20:23,750 Nous allons passer à autre chose à la prochaine chose alors-- 405 00:20:23,750 --> 00:20:26,180 qui, en fait, vous allez avoir besoin de voir le code. 406 00:20:26,180 --> 00:20:28,370 Donc je vais juste copier que sur le moment. 407 00:20:28,370 --> 00:20:31,500 408 00:20:31,500 --> 00:20:32,000 Dáccord. 409 00:20:32,000 --> 00:20:35,110 Donc, je vais vous montrer les gars ce code. 410 00:20:35,110 --> 00:20:38,240 Et je veux que vous essayer de comprendre ce qu'il est censé faire. 411 00:20:38,240 --> 00:20:49,740 412 00:20:49,740 --> 00:20:52,480 >> Donc, étant donné that-- prendre une minute ou deux. 413 00:20:52,480 --> 00:20:54,440 Essayez de comprendre ce qui se passe ici. 414 00:20:54,440 --> 00:21:58,840 415 00:21:58,840 --> 00:21:59,570 >> Toutes les idées? 416 00:21:59,570 --> 00:22:08,180 417 00:22:08,180 --> 00:22:12,470 >> Nous savons que nous avons au moins deux arguments dans la ligne de commande, pas vrai? 418 00:22:12,470 --> 00:22:16,270 Je suppose que l'un des qui va être que [inaudible] de notre programme est 419 00:22:16,270 --> 00:22:17,530 et puis quelque chose d'autre. 420 00:22:17,530 --> 00:22:19,980 Parce que si [inaudible] est moins de deux, nous crions après eux. 421 00:22:19,980 --> 00:22:21,140 Droit? 422 00:22:21,140 --> 00:22:25,300 Et de l'usage, il semble que ça va être une sorte de fichier. 423 00:22:25,300 --> 00:22:26,260 Nous sommes tous d'accord? 424 00:22:26,260 --> 00:22:29,110 425 00:22:29,110 --> 00:22:31,570 Alors maintenant, quelle est la boucle faire? 426 00:22:31,570 --> 00:22:32,570 Qu'est-ce que ça va à travers? 427 00:22:32,570 --> 00:22:35,000 428 00:22:35,000 --> 00:22:36,449 >> Public: Tous les fichiers. 429 00:22:36,449 --> 00:22:37,240 ENCEINTE 1: Exactement. 430 00:22:37,240 --> 00:22:39,650 Il va à travers tout le fichiers que nous avons entrée il. 431 00:22:39,650 --> 00:22:40,720 432 00:22:40,720 --> 00:22:46,040 Ainsi, pour chaque fichier, il est ouvrir une chaîne de caractères il. 433 00:22:46,040 --> 00:22:47,560 Il est d'ouvrir ce fichier. 434 00:22:47,560 --> 00:22:48,060 Droit? 435 00:22:48,060 --> 00:22:49,140 436 00:22:49,140 --> 00:22:52,380 Et il est lu de lui. 437 00:22:52,380 --> 00:22:53,420 438 00:22:53,420 --> 00:22:55,540 Bien sûr, vérifier si elle est nulle. 439 00:22:55,540 --> 00:22:57,220 Et puis il a l'impression. 440 00:22:57,220 --> 00:23:01,460 Si elle est nulle, il est juste de nous dire que ce ne est pas un fichier qui existe. 441 00:23:01,460 --> 00:23:04,290 Parce que souvenez-vous, avec lire notre fichier doit exister. 442 00:23:04,290 --> 00:23:04,810 Droit? 443 00:23:04,810 --> 00:23:06,870 Avec écriture et append, vous pouvez vous en sortir avec elle. 444 00:23:06,870 --> 00:23:08,970 Mais en lecture, notre fichier doit exister. 445 00:23:08,970 --> 00:23:10,430 446 00:23:10,430 --> 00:23:13,330 >> Et puis, si elle existe, que faisons-nous ici? 447 00:23:13,330 --> 00:23:14,810 448 00:23:14,810 --> 00:23:15,780 Disons simplement Commencez ici. 449 00:23:15,780 --> 00:23:18,815 Qu'est-ce do-- ce premier caractère. 450 00:23:18,815 --> 00:23:20,960 451 00:23:20,960 --> 00:23:21,790 Que faut-il faire? 452 00:23:21,790 --> 00:23:24,100 Il obtient un caractère, non? 453 00:23:24,100 --> 00:23:25,400 Quel est donc ce fait? 454 00:23:25,400 --> 00:23:26,775 Il devient le premier caractère. 455 00:23:26,775 --> 00:23:28,860 456 00:23:28,860 --> 00:23:30,200 Tout le monde sait EOF? 457 00:23:30,200 --> 00:23:31,170 >> PUBLIC: Fin de fichier? 458 00:23:31,170 --> 00:23:32,680 >> ENCEINTE 1: Fin de file-- exactement. 459 00:23:32,680 --> 00:23:35,310 Donc, ça va passer par l'ensemble du dossier, non? 460 00:23:35,310 --> 00:23:36,710 461 00:23:36,710 --> 00:23:40,780 Et puis il va mettre à jour par obtenir chaque caractère suivant. 462 00:23:40,780 --> 00:23:41,565 Droit? 463 00:23:41,565 --> 00:23:43,636 Et que fait-il? 464 00:23:43,636 --> 00:23:44,760 PUBLIC: Mettre que in-- 465 00:23:44,760 --> 00:23:46,741 466 00:23:46,741 --> 00:23:49,170 >> ENCEINTE 1: gravures putchar à votre écran de veille. 467 00:23:49,170 --> 00:23:50,867 468 00:23:50,867 --> 00:23:51,950 [Inaudible] le caractère. 469 00:23:51,950 --> 00:23:54,300 Et puis, quand il [inaudible] cette ferme le dossier. 470 00:23:54,300 --> 00:23:57,370 >> Public: Avez-vous pas besoin d'un [? d'autre? ?] 471 00:23:57,370 --> 00:23:59,005 >> ENCEINTE 1: Pas nécessairement. 472 00:23:59,005 --> 00:24:01,480 Je veux dire, il est une sorte de sous-entendu dans cette. 473 00:24:01,480 --> 00:24:06,780 Parce que cela renvoie, cependant, aussi longtemps que cela ne rattrape pas cela, vous êtes très bien. 474 00:24:06,780 --> 00:24:07,940 475 00:24:07,940 --> 00:24:10,250 Je veux dire qu'il est probablement bon pratiquer à faire une autre. 476 00:24:10,250 --> 00:24:15,755 Mais une autre ne sont pas toujours nécessaire en particulier 477 00:24:15,755 --> 00:24:17,610 si vous avez quelque chose comme un retour, qui 478 00:24:17,610 --> 00:24:20,640 signifie que dans ce cas, si il attrape il, votre programme va se terminer 479 00:24:20,640 --> 00:24:21,850 et ce ne sera jamais arriver à cela. 480 00:24:21,850 --> 00:24:23,030 481 00:24:23,030 --> 00:24:29,190 Il est plus dans le cas où vous êtes pas nécessairement quelque chose de retour. 482 00:24:29,190 --> 00:24:31,370 Parce que si cela n'a pas été tout retour, 483 00:24:31,370 --> 00:24:34,430 cela voudrait dire que si cela était vrai, le reste de ce serait encore fonctionner. 484 00:24:34,430 --> 00:24:36,138 Et dans ce cas, vous voudrait un faux. 485 00:24:36,138 --> 00:24:38,240 Si elle est de retour, et La fin de votre programme, 486 00:24:38,240 --> 00:24:41,960 un autre est pas nécessaire tout le temps, en fonction du contexte. 487 00:24:41,960 --> 00:24:43,084 488 00:24:43,084 --> 00:24:44,375 Jacob, avez-vous une question? 489 00:24:44,375 --> 00:24:46,100 PUBLIC: Ouais. 490 00:24:46,100 --> 00:24:49,300 Il en va de fgetc obtenir le caractère suivant? 491 00:24:49,300 --> 00:24:50,734 Comment augmenter le caractère? 492 00:24:50,734 --> 00:24:51,400 ENCEINTE 1: Ouais. 493 00:24:51,400 --> 00:24:52,774 Donc fgetc obtient le caractère suivant. 494 00:24:52,774 --> 00:24:54,140 495 00:24:54,140 --> 00:24:56,866 Vous pouvez penser comme C ++ dans un sens. 496 00:24:56,866 --> 00:24:58,350 >> PUBLIC: Alors quelle est EOF? 497 00:24:58,350 --> 00:25:00,877 >> ENCEINTE 1: EOF est la fin du fichier. 498 00:25:00,877 --> 00:25:03,960 Il est juste un marqueur qui vous permet de savoir que vous êtes à la fin de votre fichier. 499 00:25:03,960 --> 00:25:06,742 Donc, cela va imprimer à votre sortie standard. 500 00:25:06,742 --> 00:25:08,950 Et puis il va fermer le fichier quand il est fait. 501 00:25:08,950 --> 00:25:10,700 Et puis passons à le fichier suivant, non? 502 00:25:10,700 --> 00:25:12,660 Donc dans l'ensemble, qu'est-ce que le programme fait? 503 00:25:12,660 --> 00:25:15,402 504 00:25:15,402 --> 00:25:16,090 >> [Inaudible] 505 00:25:16,090 --> 00:25:16,900 >> ENCEINTE 1: Ouais. 506 00:25:16,900 --> 00:25:18,770 Il se contente d'afficher tout ce qu'il ya. 507 00:25:18,770 --> 00:25:23,270 Donc CAT si vous les gars avez déjà utilisé et puis le nom de certains file-- 508 00:25:23,270 --> 00:25:26,240 Je ne sais pas si quelqu'un d'entre vous ont jamais fait sur votre terminal. 509 00:25:26,240 --> 00:25:29,630 Mais si jamais vous utilisez la commande CAT-- C-A-T-- 510 00:25:29,630 --> 00:25:31,880 et alors tout fichier vous avez there-- il 511 00:25:31,880 --> 00:25:37,260 l'imprime sur votre terminal, qui peut être super pratique pour certaines choses. 512 00:25:37,260 --> 00:25:38,746 Je l'utilise beaucoup. 513 00:25:38,746 --> 00:25:40,120 Cela fait-il sens à tout le monde? 514 00:25:40,120 --> 00:25:41,480 515 00:25:41,480 --> 00:25:42,100 Cool? 516 00:25:42,100 --> 00:25:46,530 >> OK donc votre tâche maintenant-- soit par vous-même ou avec les gens autour vous-- 517 00:25:46,530 --> 00:25:54,930 est à juste écrire un programme simple qui va juste écrire "Bonjour, monde!" 518 00:25:54,930 --> 00:25:56,255 dans un fichier. 519 00:25:56,255 --> 00:26:00,215 >> [Inaudible] 520 00:26:00,215 --> 00:26:56,210 521 00:26:56,210 --> 00:26:57,040 >> [Inaudible] 522 00:26:57,040 --> 00:26:59,248 >> ENCEINTE 1: je me suis dit, ne Je fais cette semaine mal passée? 523 00:26:59,248 --> 00:27:00,201 524 00:27:00,201 --> 00:27:01,492 Je ne pensais pas qu'il était si mal que ça. 525 00:27:01,492 --> 00:27:02,479 526 00:27:02,479 --> 00:27:03,520 Je suis heureux que vous soyez tous ici. 527 00:27:03,520 --> 00:27:04,655 Il me rend vraiment heureux. 528 00:27:04,655 --> 00:27:07,565 529 00:27:07,565 --> 00:27:10,160 Je suis une fille de plaisirs simples. 530 00:27:10,160 --> 00:27:11,688 Je viens aime quand ma section assiste. 531 00:27:11,688 --> 00:27:13,830 532 00:27:13,830 --> 00:27:18,270 Donc, je suis juste cela a commencé pour vous les gars pour que nous puissions code ensemble. 533 00:27:18,270 --> 00:27:22,290 Je ne veux pas mettre n'importe qui sur l'endroit, sauf si vous voulez être. 534 00:27:22,290 --> 00:27:26,486 535 00:27:26,486 --> 00:27:30,086 >> PUBLIC: Pour le test, faire nous devons écrire un programme? 536 00:27:30,086 --> 00:27:33,260 >> ENCEINTE 1: Vous pouvez être invité à écrire des programmes simples à la main. 537 00:27:33,260 --> 00:27:35,940 538 00:27:35,940 --> 00:27:36,590 Ouaip. 539 00:27:36,590 --> 00:27:38,510 >> AUDIENCE: Le quiz est la semaine prochaine, non? 540 00:27:38,510 --> 00:27:40,108 >> ENCEINTE 1: Le quiz est mercredi prochain. 541 00:27:40,108 --> 00:27:40,855 542 00:27:40,855 --> 00:27:43,730 Cela signifie qu'il ya une belle [? CST?] classement parti après, qui 543 00:27:43,730 --> 00:27:50,390 signifie que vous obtiendrez vos scores retour que night-- à quelle heure? 544 00:27:50,390 --> 00:27:50,890 Qui sait? 545 00:27:50,890 --> 00:27:51,973 Mais ce sera cette nuit-là. 546 00:27:51,973 --> 00:28:02,020 547 00:28:02,020 --> 00:28:02,855 >> Bien. 548 00:28:02,855 --> 00:28:04,250 Comment voulons-nous commencer ce? 549 00:28:04,250 --> 00:28:07,964 550 00:28:07,964 --> 00:28:09,630 Je vais vous donner un début de hint-- avec cela. 551 00:28:09,630 --> 00:28:11,455 >> Public: Vous devez ouvrir un fichier. 552 00:28:11,455 --> 00:28:12,250 >> ENCEINTE 1: Ouais. 553 00:28:12,250 --> 00:28:14,060 Alors qu'est-ce que vous voulez appeler cela? 554 00:28:14,060 --> 00:28:16,150 Voulez-vous juste de l'appeler "fichier"? 555 00:28:16,150 --> 00:28:17,480 Faisons facile. 556 00:28:17,480 --> 00:28:26,752 Donc, ce qui est notre fopen-- test de sortie va être? 557 00:28:26,752 --> 00:28:36,130 Appelez-le «Bonjour». 558 00:28:36,130 --> 00:28:37,810 Et quel est notre mode actuel? 559 00:28:37,810 --> 00:28:39,764 560 00:28:39,764 --> 00:28:41,055 Que faisons-nous à ce dossier? 561 00:28:41,055 --> 00:28:42,676 562 00:28:42,676 --> 00:28:43,500 >> PUBLIC: Lire. 563 00:28:43,500 --> 00:28:44,401 564 00:28:44,401 --> 00:28:44,900 Rédaction. 565 00:28:44,900 --> 00:28:46,191 ENCEINTE 1: Nous écrivons à elle. 566 00:28:46,191 --> 00:28:47,360 567 00:28:47,360 --> 00:28:47,860 Belle. 568 00:28:47,860 --> 00:28:50,330 569 00:28:50,330 --> 00:28:52,860 OK, donc nous avons maintenant ce fichier. 570 00:28:52,860 --> 00:28:54,920 571 00:28:54,920 --> 00:28:56,212 Que devons-nous faire? 572 00:28:56,212 --> 00:28:57,420 PUBLIC: vérifier si elle est nulle. 573 00:28:57,420 --> 00:28:59,820 ENCEINTE 1: Vérifier si elle est null-- exactement. 574 00:28:59,820 --> 00:29:01,980 Voilà ce que je veux entendre. 575 00:29:01,980 --> 00:29:05,930 Cela devrait être automatique, en particulier à peu près à partir de ce moment-là. 576 00:29:05,930 --> 00:29:07,530 577 00:29:07,530 --> 00:29:10,950 Si vous commencez segfaulting, vous avez probablement n'a pas vérifié pour nulle part. 578 00:29:10,950 --> 00:29:12,480 Neuf fois sur dix, qui est va être votre erreur. 579 00:29:12,480 --> 00:29:15,400 Donc, si vous pourriez obtenir dans le habitude, toujours vérifier si elle est nulle, 580 00:29:15,400 --> 00:29:18,150 votre vie va être agréable et easy-- ou plus facile. 581 00:29:18,150 --> 00:29:19,480 >> Afin de vérifier pour voir si elle est nulle. 582 00:29:19,480 --> 00:29:21,200 583 00:29:21,200 --> 00:29:24,820 Donc, si il est pas nul, ce qui est ce que le coup est égal à 584 00:29:24,820 --> 00:29:26,784 désigne: pas null-- il est valable. 585 00:29:26,784 --> 00:29:27,700 Que voulons-nous faire? 586 00:29:27,700 --> 00:29:29,750 587 00:29:29,750 --> 00:29:31,570 Nous voulons simplement imprimer à ce fichier, non? 588 00:29:31,570 --> 00:29:32,923 Alors qu'est-ce qu'on va utiliser? 589 00:29:32,923 --> 00:29:34,092 >> PUBLIC: fprintf 590 00:29:34,092 --> 00:29:36,800 >> ENCEINTE 1: Fprintf-- belle. 591 00:29:36,800 --> 00:29:38,150 592 00:29:38,150 --> 00:29:44,000 Et fprintf prend deux arguments-- où il va et ce que nous voulons imprimé. 593 00:29:44,000 --> 00:29:45,820 Alors, quel est le premier? 594 00:29:45,820 --> 00:29:46,570 Où est-ce qu'il va? 595 00:29:46,570 --> 00:29:47,490 >> PUBLIC: Fichier. 596 00:29:47,490 --> 00:29:48,785 >> ENCEINTE 1: Il va déposer. 597 00:29:48,785 --> 00:29:49,784 598 00:29:49,784 --> 00:29:50,950 Et que voulons-nous imprimé? 599 00:29:50,950 --> 00:29:52,900 600 00:29:52,900 --> 00:29:58,065 "Bonjour, monde!" 601 00:29:58,065 --> 00:29:58,565 Bien. 602 00:29:58,565 --> 00:30:03,670 Nous avons une dernière chose-- un autre grand paradigme ici. 603 00:30:03,670 --> 00:30:04,479 604 00:30:04,479 --> 00:30:05,145 PUBLIC: Fermer. 605 00:30:05,145 --> 00:30:05,853 ENCEINTE 1: Fermer. 606 00:30:05,853 --> 00:30:09,990 607 00:30:09,990 --> 00:30:10,540 Là vous allez. 608 00:30:10,540 --> 00:30:13,384 >> Public: Est-ce qui se passe si le fichier est nulle? 609 00:30:13,384 --> 00:30:15,050 ENCEINTE 1: Non, cela est si elle est non nulle. 610 00:30:15,050 --> 00:30:16,881 PUBLIC: Oh, si elle est pas-- OK. 611 00:30:16,881 --> 00:30:21,728 612 00:30:21,728 --> 00:30:25,410 Pour la fonction fopen et puis la deux arguments qui vont à l'intérieur, 613 00:30:25,410 --> 00:30:27,655 qu'est-ce que le premier argument signifie encore? 614 00:30:27,655 --> 00:30:30,392 >> ENCEINTE 1: L'argument est tout comme le nom du fichier 615 00:30:30,392 --> 00:30:31,350 que vous voulez aller. 616 00:30:31,350 --> 00:30:36,020 Donc, après ce court, vous le feriez avoir un fichier appelé "bonjour" 617 00:30:36,020 --> 00:30:38,320 qui avait "Bonjour, monde" en son sein. 618 00:30:38,320 --> 00:30:38,820 Ce est tout. 619 00:30:38,820 --> 00:30:39,500 Rien que le nom. 620 00:30:39,500 --> 00:30:42,685 621 00:30:42,685 --> 00:30:48,650 >> Public: Et comme il est écrit, le fichier ne doit pas exister déjà. 622 00:30:48,650 --> 00:30:49,675 Est-ce que vous avez dit? 623 00:30:49,675 --> 00:30:50,410 >> ENCEINTE 1: Droit. 624 00:30:50,410 --> 00:30:50,910 Exactement. 625 00:30:50,910 --> 00:30:53,110 626 00:30:53,110 --> 00:30:55,839 Si "Bonjour" comme un fichier ne sont pas encore réunies, il est 627 00:30:55,839 --> 00:30:58,380 va créer un fichier appelé Bonjour "et écrire pour vous. 628 00:30:58,380 --> 00:30:59,631 629 00:30:59,631 --> 00:31:03,610 >> PUBLIC: Quand vous dites le programme écrit dans le fichier, 630 00:31:03,610 --> 00:31:08,075 Pourquoi écrivez-vous "fichier" au lieu de le nom du fichier et fprintf-- 631 00:31:08,075 --> 00:31:13,600 >> ENCEINTE 1: Parce que dans ce cas, nous avons que grand FILE-- tout en étoiles caps--, 632 00:31:13,600 --> 00:31:14,260 déposer. 633 00:31:14,260 --> 00:31:17,370 Donc, il est un pointeur vers le fichier que vous parlez. 634 00:31:17,370 --> 00:31:19,930 Ceci est la façon que nous nous référons seulement à elle. 635 00:31:19,930 --> 00:31:24,850 Donc dans ce cas, vous peut penser aha file--, 636 00:31:24,850 --> 00:31:31,271 nous pouvons utiliser this-- fichier ici se réfère à l'ouverture du "Bonjour" 637 00:31:31,271 --> 00:31:32,145 et de le laisser écrire. 638 00:31:32,145 --> 00:31:34,728 >> PUBLIC: Pourrions-nous mettre un "Bonjour" au lieu [? de juste?] -f fichier? 639 00:31:34,728 --> 00:31:40,160 ENCEINTE 1: Non, parce que "Bonjour" doit être ouvert et accessible en écriture. 640 00:31:40,160 --> 00:31:41,820 641 00:31:41,820 --> 00:31:45,980 Déposer ici est comme un indicateur qui dit OK, nous 642 00:31:45,980 --> 00:31:49,190 avoir cette hello-- file-- que nous cherchons à. 643 00:31:49,190 --> 00:31:50,680 Il a été ouvert. 644 00:31:50,680 --> 00:31:52,140 Et nous allons écrire. 645 00:31:52,140 --> 00:31:55,130 Si vous utilisez juste "Bonjour", qui est encapsulé dedans. 646 00:31:55,130 --> 00:31:56,846 Cela va donc à paniquer. 647 00:31:56,846 --> 00:31:58,590 648 00:31:58,590 --> 00:32:00,300 Je veux dire, vous pouvez l'ont nommé. 649 00:32:00,300 --> 00:32:03,960 Vous auriez pu faire fichier, étoiles, "Bonjour", est égale à celle. 650 00:32:03,960 --> 00:32:07,840 Mais toute la question est que vous besoin d'un pointeur fichier étoile afin 651 00:32:07,840 --> 00:32:09,281 pour pouvoir utiliser ces fonctions. 652 00:32:09,281 --> 00:32:11,280 Public: Pourriez-vous faire fichier, étoiles, fichier, "Bonjour" 653 00:32:11,280 --> 00:32:13,113 ou que vous avez à mettre déposer étoiles, fichier par elle? 654 00:32:13,113 --> 00:32:16,330 ENCEINTE 1: Vous pourriez faire fichier, étoile, "Bonjour." 655 00:32:16,330 --> 00:32:19,790 Vous pouvez changer cela en le nom que vous voulez. 656 00:32:19,790 --> 00:32:22,114 Il est tout à fait arbitraire ce qui appelle. 657 00:32:22,114 --> 00:32:23,179 658 00:32:23,179 --> 00:32:24,220 Vous pouvez nommer n'importe quoi. 659 00:32:24,220 --> 00:32:25,501 660 00:32:25,501 --> 00:32:28,020 Nommez-spaghetti volant, si vous voulez. 661 00:32:28,020 --> 00:32:29,690 >> Public: Qu'est-ce que le "w" entre guillemets pour? 662 00:32:29,690 --> 00:32:31,540 >> ENCEINTE 1: Le "w" est juste le mode. 663 00:32:31,540 --> 00:32:33,170 Nous avons donc écrit à ce fichier. 664 00:32:33,170 --> 00:32:34,410 665 00:32:34,410 --> 00:32:35,320 Tout le monde bien? 666 00:32:35,320 --> 00:32:36,227 Effacer? 667 00:32:36,227 --> 00:32:36,981 Oui. 668 00:32:36,981 --> 00:32:40,365 >> Public: Alors, quand il écrit cette Fichier, où trouvons-nous alors ce fichier? 669 00:32:40,365 --> 00:32:43,820 >> ENCEINTE 1: Ce sera dans le même répertoire que vous êtes actuellement. 670 00:32:43,820 --> 00:32:45,650 671 00:32:45,650 --> 00:32:48,880 Si vous êtes dans pset trois et vous exécutez ce, au sein de votre pset 672 00:32:48,880 --> 00:32:52,600 trois dossier va être ce fichier appelé "Bonjour." 673 00:32:52,600 --> 00:32:53,160 Cool? 674 00:32:53,160 --> 00:32:53,757 Tout le monde bien? 675 00:32:53,757 --> 00:32:55,840 Je me sens comme vous êtes tous obtenir, ce qui est excellent. 676 00:32:55,840 --> 00:32:57,290 677 00:32:57,290 --> 00:32:57,790 Dáccord. 678 00:32:57,790 --> 00:33:05,960 Donc, retour à ma diapositive show-- Je l'aime quand les choses fonctionnent. 679 00:33:05,960 --> 00:33:08,674 OK, pointers-- vous les gars sont excités? 680 00:33:08,674 --> 00:33:09,465 Les pointeurs sont grand. 681 00:33:09,465 --> 00:33:11,581 682 00:33:11,581 --> 00:33:13,580 Ils prennent un peu pour envelopper votre tête autour. 683 00:33:13,580 --> 00:33:15,288 Ceci est ma deuxième année pointeurs d'enseignement. 684 00:33:15,288 --> 00:33:16,850 Et je pense que je l'ai finalement obtenu. 685 00:33:16,850 --> 00:33:18,650 Donc, si vous avez du mal, il est OK. 686 00:33:18,650 --> 00:33:19,940 687 00:33:19,940 --> 00:33:24,070 Comme je le disais avant, dessiner des images aide beaucoup de choses dans CS, 688 00:33:24,070 --> 00:33:27,400 autant que je pense que les gens ont tendance de penser oh, nous sommes à un ordinateur. 689 00:33:27,400 --> 00:33:28,399 Nous devrions simplement le code. 690 00:33:28,399 --> 00:33:30,190 No-- dessin photos va vraiment vous aider. 691 00:33:30,190 --> 00:33:32,773 Et je vous encourage vraiment à puiser dans votre côté école maternelle 692 00:33:32,773 --> 00:33:35,010 et de faire ressortir les crayons ou marqueurs et tirage au sort. 693 00:33:35,010 --> 00:33:36,110 Parce que cela va vous aider. 694 00:33:36,110 --> 00:33:39,380 Et si vous me voyez pendant les heures de bureau, je seront porter autour des piles de papier 695 00:33:39,380 --> 00:33:41,580 avec des stylos dessin choses. 696 00:33:41,580 --> 00:33:44,370 >> Donc, en particulier avec pointers-- dessiner. 697 00:33:44,370 --> 00:33:47,970 Et je suis sûr que nous allons en fait être tirer quelques photos ici aussi. 698 00:33:47,970 --> 00:33:51,270 >> Alors vous les gars ont tous eu à voir Binky, cette chose de pâte à modeler cool. 699 00:33:51,270 --> 00:33:54,720 Et nous pensons qu'il est vraiment drôle quand il explose en un tas de morceaux. 700 00:33:54,720 --> 00:33:56,280 701 00:33:56,280 --> 00:33:57,755 Il est certain soulagement comique pour la classe. 702 00:33:57,755 --> 00:34:02,140 703 00:34:02,140 --> 00:34:05,900 C [inaudible] ce grand capacité pour être en mesure de contrôler la mémoire. 704 00:34:05,900 --> 00:34:10,090 Et il est l'une des choses qui comptent vraiment rend un tel langage puissant. 705 00:34:10,090 --> 00:34:13,469 Mais avec une grande puissance vient grande responsabilité. 706 00:34:13,469 --> 00:34:16,230 Et des choses folles peuvent arriver si vous ne faites pas attention. 707 00:34:16,230 --> 00:34:18,560 Ainsi, lorsque vous utilisez pointeurs, vous voulez faire 708 00:34:18,560 --> 00:34:21,440 que vous comprenez vraiment exactement ce que vous faites. 709 00:34:21,440 --> 00:34:25,530 Espérons que le prochain peu de temps vous aidera à comprendre vraiment 710 00:34:25,530 --> 00:34:27,850 pointeurs, comment les utiliser, et la façon de les manipuler. 711 00:34:27,850 --> 00:34:29,170 712 00:34:29,170 --> 00:34:33,460 >> Donc memory-- Je suis sûr que nous avons vu ce schéma avant. 713 00:34:33,460 --> 00:34:38,540 Donc, ceci est un simple schéma de comment les choses pourraient être stockés mémoire. 714 00:34:38,540 --> 00:34:43,145 Donc, vous avez essentiellement ces d'énormes ensembles de blocs d'un octet 715 00:34:43,145 --> 00:34:46,000 est ce que nous avons ici-- légère incrémente de un à chaque fois. 716 00:34:46,000 --> 00:34:51,810 Ceci est en hexadécimal [inaudible] donc blocs de huit bits. 717 00:34:51,810 --> 00:34:55,510 Et chaque bloc est associé avec une certaine adresse hexadécimale. 718 00:34:55,510 --> 00:34:58,750 Donc si jamais vous voyez le 0x, qui est juste notation de 719 00:34:58,750 --> 00:35:00,670 qu'il est une adresse hexadécimale. 720 00:35:00,670 --> 00:35:03,970 Vous pouvez supposer que cela signifie Une adresse dans la mémoire. 721 00:35:03,970 --> 00:35:06,935 Nous parlons des adresses mémoire chaque fois que vous voyez hexadécimal. 722 00:35:06,935 --> 00:35:10,420 723 00:35:10,420 --> 00:35:14,630 >> Nous avons ints sont des variables, flotteurs sont des variables qui stockent. 724 00:35:14,630 --> 00:35:16,260 Donc ints ints de magasins. 725 00:35:16,260 --> 00:35:17,430 Magasin flotteurs flotteurs. 726 00:35:17,430 --> 00:35:20,260 Donc, nous avons aussi des pointeurs que les adresses de mémoire de stockage. 727 00:35:20,260 --> 00:35:21,660 Voilà une sorte de cartographie. 728 00:35:21,660 --> 00:35:24,240 Les pointeurs sont exclusivement pour des adresses de mémoire. 729 00:35:24,240 --> 00:35:25,780 730 00:35:25,780 --> 00:35:27,292 Voilà donc comme le type là-bas. 731 00:35:27,292 --> 00:35:29,550 732 00:35:29,550 --> 00:35:34,470 Votre appareil est en 32 bits, ce qui signifie que votre adresse de mémoire est de quatre octets. 733 00:35:34,470 --> 00:35:37,830 Ainsi, tout pointeur que vous avez va également être de quatre octets. 734 00:35:37,830 --> 00:35:43,200 Ou bien si elle est de quatre octets, la mémoire est de quatre octets. 735 00:35:43,200 --> 00:35:44,790 Pointeurs mémoire de stockage. 736 00:35:44,790 --> 00:35:46,430 Par conséquent, ils sont quatre octets. 737 00:35:46,430 --> 00:35:48,460 Cool-- veux juste que renforcer. 738 00:35:48,460 --> 00:35:50,120 739 00:35:50,120 --> 00:35:52,220 >> Vous devriez obtenir cette BD maintenant. 740 00:35:52,220 --> 00:35:55,040 Je ne sais pas combien d'entre vous sont fans xkcd, mais je aiment xkcd. 741 00:35:55,040 --> 00:35:55,780 Ce est super. 742 00:35:55,780 --> 00:35:57,290 743 00:35:57,290 --> 00:35:57,790 >> Bien. 744 00:35:57,790 --> 00:36:01,640 Créant ainsi pointers-- comme je le disais, il est à peu près comme tout le reste. 745 00:36:01,640 --> 00:36:02,930 Vous avez un type. 746 00:36:02,930 --> 00:36:04,050 Vous avez un nom. 747 00:36:04,050 --> 00:36:04,810 Droit? 748 00:36:04,810 --> 00:36:10,410 Voilà ce que nous avons là. [? Hex?] Étoiles signifie qu'il est un pointeur, 749 00:36:10,410 --> 00:36:12,250 et puis tout ce que vous voulez l'appeler. 750 00:36:12,250 --> 00:36:15,770 Ainsi, le type représente ce que vous pouvez stocker. 751 00:36:15,770 --> 00:36:16,850 752 00:36:16,850 --> 00:36:17,990 Bien? 753 00:36:17,990 --> 00:36:24,350 De la même manière que si nous faisons ints, nous savons que nous stocker un int il. 754 00:36:24,350 --> 00:36:25,990 755 00:36:25,990 --> 00:36:30,280 Avec un pointeur, il détient une adresse mémoire. 756 00:36:30,280 --> 00:36:34,240 Mais ce que cela signifie est that-- voici où un dessin va être utile. 757 00:36:34,240 --> 00:36:36,170 758 00:36:36,170 --> 00:36:45,980 Donc dans ce cas, nous avons certains value-- disons quatre. 759 00:36:45,980 --> 00:36:49,306 Quatre est à une adresse. 760 00:36:49,306 --> 00:36:49,805 D'accord? 761 00:36:49,805 --> 00:36:51,550 762 00:36:51,550 --> 00:36:56,170 >> Cela signifie ici une première qu'il est un 2x pointeur. 763 00:36:56,170 --> 00:36:56,740 Droit? 764 00:36:56,740 --> 00:36:57,628 Il est certain pointeur x. 765 00:36:57,628 --> 00:36:58,852 766 00:36:58,852 --> 00:37:00,940 x peut être quelque chose, peu importe. 767 00:37:00,940 --> 00:37:01,960 768 00:37:01,960 --> 00:37:05,130 Quel que soit x est-- dire x est de quatre. 769 00:37:05,130 --> 00:37:07,280 Il va stocker le adresse mémoire ici. 770 00:37:07,280 --> 00:37:12,260 Donc int, étoiles, x-- cela est une autre fente dans memory-- 771 00:37:12,260 --> 00:37:13,590 qui sait ce qu'il en est. 772 00:37:13,590 --> 00:37:15,430 Mais il va enregistrer une adresse ici. 773 00:37:15,430 --> 00:37:27,040 Donc, ce serait like-- dans ce cas, peu importe, 774 00:37:27,040 --> 00:37:32,630 est stocké à tout ce qui est stocké 0x1-- à l'adresse que notre pointeur contient, 775 00:37:32,630 --> 00:37:35,280 doit correspondre avec ce que nous avons désigné. 776 00:37:35,280 --> 00:37:40,330 Ainsi, au 0x1, dans ce cas, cela est x. 777 00:37:40,330 --> 00:37:42,500 778 00:37:42,500 --> 00:37:49,340 Ce ne peut être que d'un int alors que nous sommes en utilisant ce. 779 00:37:49,340 --> 00:37:52,950 >> De même, si nous avons 1a autre, quel que soit 780 00:37:52,950 --> 00:37:59,130 adresse est stockée avec un y a être une même chose char-- avec z. 781 00:37:59,130 --> 00:38:05,840 De la même manière, chaque fois que vous essayer de faire INTX est égal à 0,4, 782 00:38:05,840 --> 00:38:09,275 il va crier à vous et être comme non, vous avez dit que vous vouliez un int. 783 00:38:09,275 --> 00:38:10,525 Ce système est censé être un int. 784 00:38:10,525 --> 00:38:11,900 Arrêtez d'essayer de faire un flotteur. 785 00:38:11,900 --> 00:38:14,150 >> Alors que les choses soient ce qu'ils veulent être. 786 00:38:14,150 --> 00:38:15,159 787 00:38:15,159 --> 00:38:16,200 Laissez les choses eux-mêmes. 788 00:38:16,200 --> 00:38:19,380 789 00:38:19,380 --> 00:38:23,450 Donc grand chose est juste quel que soit le type de pointeur 790 00:38:23,450 --> 00:38:26,101 il est, qui est la seule chose que vous pouvez y stocker. 791 00:38:26,101 --> 00:38:26,600 D'accord? 792 00:38:26,600 --> 00:38:27,910 793 00:38:27,910 --> 00:38:31,160 Avec la pratique, comme la semaine dernière, tout 794 00:38:31,160 --> 00:38:32,817 semble vraiment une sorte de résumé. 795 00:38:32,817 --> 00:38:34,150 Nous allons faire un peu de pratique. 796 00:38:34,150 --> 00:38:36,760 Il devrait être plus compréhensible. 797 00:38:36,760 --> 00:38:44,580 >> Donc, le référencement et dereferencing-- il est vraiment important pour obtenir ces droits. 798 00:38:44,580 --> 00:38:46,630 Je dois encore rafraîchir de temps en temps. 799 00:38:46,630 --> 00:38:48,450 Et je suis comme attente, dont un que je veux? 800 00:38:48,450 --> 00:38:56,080 Donc, l'esperluette sera effectivement donner vous la référence ou l'adresse de. 801 00:38:56,080 --> 00:39:00,100 Donc, il renvoie l'adresse de mémoire de la variable qui est stocké. 802 00:39:00,100 --> 00:39:01,170 803 00:39:01,170 --> 00:39:07,020 Donc, il va effectivement revenir à vous hexadécimal, alors que déréférençant 804 00:39:07,020 --> 00:39:10,641 qui se passe réellement à vous donner les données qui y sont stockées. 805 00:39:10,641 --> 00:39:11,140 D'accord? 806 00:39:11,140 --> 00:39:12,680 807 00:39:12,680 --> 00:39:16,060 Donc, nous allons regarder un exemple très vite, ou en fait à côté. 808 00:39:16,060 --> 00:39:18,050 809 00:39:18,050 --> 00:39:19,150 >> Dáccord. 810 00:39:19,150 --> 00:39:21,790 Donc, nous devons penser vraiment soigneusement à ce sujet. 811 00:39:21,790 --> 00:39:23,860 Nous avons donc ici un entier x. 812 00:39:23,860 --> 00:39:26,485 Je vais essayer de dessiner ce sur au mieux de mes capacités. 813 00:39:26,485 --> 00:39:30,230 814 00:39:30,230 --> 00:39:32,410 Nous allons donc avoir cette fente x. 815 00:39:32,410 --> 00:39:35,850 816 00:39:35,850 --> 00:39:37,315 Et il est le stockage de cinq ans. 817 00:39:37,315 --> 00:39:38,640 818 00:39:38,640 --> 00:39:40,090 Son adresse est 0x4. 819 00:39:40,090 --> 00:39:41,920 820 00:39:41,920 --> 00:39:43,160 Cool? 821 00:39:43,160 --> 00:39:44,100 Toutes les bonnes. 822 00:39:44,100 --> 00:39:45,470 >> Nous avons donc maintenant ce pointeur. 823 00:39:45,470 --> 00:39:46,916 824 00:39:46,916 --> 00:39:47,990 Il était ici. 825 00:39:47,990 --> 00:39:52,130 826 00:39:52,130 --> 00:39:57,560 Et l'esperluette nous donne l'adresse de quelque chose. 827 00:39:57,560 --> 00:40:00,780 Donc, dans ce cas, il est l'adresse de x. 828 00:40:00,780 --> 00:40:01,875 Quelle est l'adresse de x? 829 00:40:01,875 --> 00:40:05,660 830 00:40:05,660 --> 00:40:12,590 04-- et ce pointeur est à 0x08. 831 00:40:12,590 --> 00:40:14,490 832 00:40:14,490 --> 00:40:14,990 Cool? 833 00:40:14,990 --> 00:40:16,570 834 00:40:16,570 --> 00:40:21,570 Ainsi, vous pouvez penser à cette pointeur, 04, fait un peu plus ici. 835 00:40:21,570 --> 00:40:22,840 836 00:40:22,840 --> 00:40:25,740 Et ils sont appelés pointeurs parce que nous aurons plus dans cette, 837 00:40:25,740 --> 00:40:28,450 vous allez voir pointer des choses. 838 00:40:28,450 --> 00:40:31,470 Et un bloc pointant vers un autre bloc fera beaucoup plus de sens. 839 00:40:31,470 --> 00:40:32,760 840 00:40:32,760 --> 00:40:33,890 Voici donc deux. 841 00:40:33,890 --> 00:40:38,230 Et puis nous avons un peu copie, qui est 0x0c what--. 842 00:40:38,230 --> 00:40:41,290 843 00:40:41,290 --> 00:40:43,420 Et il va déréférencer notre pointeur. 844 00:40:43,420 --> 00:40:46,790 >> Donc, ce qu'il dit est OK, voici notre pointeur. 845 00:40:46,790 --> 00:40:53,090 La valeur qu'il stocke est 0x04, et ce il est dit est d'aller à cette adresse 846 00:40:53,090 --> 00:40:54,300 et dites-moi ce qu'il ya dedans. 847 00:40:54,300 --> 00:40:55,520 848 00:40:55,520 --> 00:40:57,710 Voilà donc efficacement ce cette flèche fait. 849 00:40:57,710 --> 00:40:58,750 850 00:40:58,750 --> 00:41:01,280 Vous pouvez penser ce que votre étoile. 851 00:41:01,280 --> 00:41:05,410 Alors OK, quand nous faisons étoiles, cela signifie suivre. 852 00:41:05,410 --> 00:41:06,810 Allez à cette adresse. 853 00:41:06,810 --> 00:41:11,430 Et qui est fondamentalement juste après cette flèche pour ce morceau de mémoire. 854 00:41:11,430 --> 00:41:15,380 Et nous donner ce qu'il ya dedans, qui est de 5. 855 00:41:15,380 --> 00:41:18,840 Voilà pourquoi notre copie est égal à 5. 856 00:41:18,840 --> 00:41:20,120 Est-ce logique? 857 00:41:20,120 --> 00:41:22,769 Est-ce que quelqu'un a besoin de moi à passer par que de nouveau, ou plus lentement? 858 00:41:22,769 --> 00:41:24,560 Vous voulez que je vais à travers elle une fois de plus? 859 00:41:24,560 --> 00:41:25,060 Dáccord. 860 00:41:25,060 --> 00:41:27,549 861 00:41:27,549 --> 00:41:28,840 Nous allons redessiner à nouveau. 862 00:41:28,840 --> 00:41:31,930 863 00:41:31,930 --> 00:41:37,205 Quand nous commençons, nous sommes tous d'accord que nous avons certains morceau de mémoire qui est une variable 864 00:41:37,205 --> 00:41:40,890 x que nous avons mis égal à 5. 865 00:41:40,890 --> 00:41:42,910 Nous ne contrôlons pas où il est dans la mémoire. 866 00:41:42,910 --> 00:41:45,520 Donc, cet endroit est juste attribué arbitrairement. 867 00:41:45,520 --> 00:41:47,770 868 00:41:47,770 --> 00:41:48,731 Il bon? 869 00:41:48,731 --> 00:41:49,230 Dáccord. 870 00:41:49,230 --> 00:41:50,420 871 00:41:50,420 --> 00:41:53,330 Puis on initialise un pointeur vers un int. 872 00:41:53,330 --> 00:41:56,900 Voilà pourquoi il est permis de pointer vers x parce que nous avons un int ici. 873 00:41:56,900 --> 00:42:00,840 Nous avons un autre morceau de mémoire parce que ce pointeur 874 00:42:00,840 --> 00:42:03,485 est une variable comme tout le reste. 875 00:42:03,485 --> 00:42:06,615 Il est attribué arbitrairement un peu d'espace dans la mémoire. 876 00:42:06,615 --> 00:42:07,630 877 00:42:07,630 --> 00:42:10,830 Et ce qu'il stocke l'adresse de x. 878 00:42:10,830 --> 00:42:13,200 Ampersand signifie l'adresse de x. 879 00:42:13,200 --> 00:42:14,575 Alors, quelle est l'adresse de x? 880 00:42:14,575 --> 00:42:19,179 881 00:42:19,179 --> 00:42:20,614 >> PUBLIC: Il est zero-- 882 00:42:20,614 --> 00:42:21,280 ENCEINTE 1: 0x04. 883 00:42:21,280 --> 00:42:24,350 884 00:42:24,350 --> 00:42:25,940 Donc alors-- dernier. 885 00:42:25,940 --> 00:42:30,650 Nous avons quelques copy-- nouveau juste une autre variable. 886 00:42:30,650 --> 00:42:32,520 Donc, nous allons assigner un endroit arbitraire. 887 00:42:32,520 --> 00:42:35,260 888 00:42:35,260 --> 00:42:38,080 Et nous déréférencer notre pointeur. 889 00:42:38,080 --> 00:42:42,490 Signifie l'étoile aller à la L'adresse est stockée dans mon pointeur. 890 00:42:42,490 --> 00:42:44,480 Dites-moi ce qui est là. 891 00:42:44,480 --> 00:42:47,290 Donc, l'adresse stockée dans notre pointeur est 0x04. 892 00:42:47,290 --> 00:42:49,070 893 00:42:49,070 --> 00:42:51,310 Donc, nous allons à cette adresse. 894 00:42:51,310 --> 00:42:52,402 895 00:42:52,402 --> 00:42:54,590 Il pointe vers cette adresse. 896 00:42:54,590 --> 00:42:57,481 Ce qui est à l'intérieur de ce bloc de mémoire? 897 00:42:57,481 --> 00:42:57,980 Il est cinq. 898 00:42:57,980 --> 00:42:59,210 899 00:42:59,210 --> 00:43:01,650 Voilà ce que nous attribuons notre copie. 900 00:43:01,650 --> 00:43:03,430 901 00:43:03,430 --> 00:43:04,860 Tout le monde bien? 902 00:43:04,860 --> 00:43:05,360 Laisser refroidir. 903 00:43:05,360 --> 00:43:07,010 904 00:43:07,010 --> 00:43:08,330 Photos Again--. 905 00:43:08,330 --> 00:43:19,750 906 00:43:19,750 --> 00:43:25,200 >> Ainsi le suivi des valeurs ici-- je suis vais laisser vous en pensez à ce sujet. 907 00:43:25,200 --> 00:43:26,550 908 00:43:26,550 --> 00:43:27,750 Nous pouvons tirer une autre image. 909 00:43:27,750 --> 00:43:31,260 Mais je veux que vous essayiez et la raison à travers ce sur votre propre pendant une minute. 910 00:43:31,260 --> 00:44:01,430 911 00:44:01,430 --> 00:44:04,149 >> Comme ils ne donnent nous un exemple d'adresse, 912 00:44:04,149 --> 00:44:06,940 Je vais juste faire x-- esperluette qui devrait aider à conduire à la maison. 913 00:44:06,940 --> 00:44:07,950 Ampersand moyens d'adresse. 914 00:44:07,950 --> 00:44:09,540 915 00:44:09,540 --> 00:44:12,360 >> Ainsi, dans le premier, chacun aller à la première ligne. 916 00:44:12,360 --> 00:44:15,690 Certains x de five-- un certain ensemble fente aléatoire dans la mémoire. 917 00:44:15,690 --> 00:44:17,660 918 00:44:17,660 --> 00:44:23,200 Star Pointer Int est égal à l'adresse de x, non? 919 00:44:23,200 --> 00:44:28,180 Int pointeur étoiles crée ce bloc, l'appelle pointeur, 920 00:44:28,180 --> 00:44:30,650 et il assigne à l'adresse de x. 921 00:44:30,650 --> 00:44:32,750 922 00:44:32,750 --> 00:44:34,230 Je suis terrible à esperluette. 923 00:44:34,230 --> 00:44:36,460 924 00:44:36,460 --> 00:44:40,550 >> Maintenant, ce que nous faisons est que nous disons OK, déréférencer notre pointeur. 925 00:44:40,550 --> 00:44:42,760 Donc, nous allons OK, ce qui est en notre pointeur? 926 00:44:42,760 --> 00:44:44,820 Il est esperluette x. 927 00:44:44,820 --> 00:44:49,400 Aller à esperluette x et réaffecter. 928 00:44:49,400 --> 00:44:51,620 929 00:44:51,620 --> 00:44:57,480 >> Alors maintenant, esperluette x va être 35. 930 00:44:57,480 --> 00:45:01,540 931 00:45:01,540 --> 00:45:05,174 Donc, fondamentalement, lorsque vous êtes déréférencement, vous allez OK. 932 00:45:05,174 --> 00:45:07,090 Vous allez être le dessin photos comme celle-ci. 933 00:45:07,090 --> 00:45:09,423 Vous allez être le dessin vos flèches plus où il est. 934 00:45:09,423 --> 00:45:16,030 Alors, allez à cet emplacement dans la mémoire et soit me donner cette valeur de retour, ou le modifier. 935 00:45:16,030 --> 00:45:21,620 Dans ce cas, parce que nous sommes à ce valeur, nous assignant à 35. 936 00:45:21,620 --> 00:45:24,700 Alors que dans le dernier un, si vous remarquez, nous 937 00:45:24,700 --> 00:45:27,680 ont été attribuant ce qui était ici à quelque chose d'autre. 938 00:45:27,680 --> 00:45:30,450 939 00:45:30,450 --> 00:45:32,245 >> Donc, ils ont ce tableau impressionnant. 940 00:45:32,245 --> 00:45:35,000 941 00:45:35,000 --> 00:45:36,890 Il est pas si mal. 942 00:45:36,890 --> 00:45:37,970 Les gars, vous travaillez dessus. 943 00:45:37,970 --> 00:45:39,640 Je vais dessiner sur la planche. 944 00:45:39,640 --> 00:45:41,306 Nous allons remplir ensemble, OK? 945 00:45:41,306 --> 00:45:42,290 946 00:45:42,290 --> 00:45:45,530 Alors prenez un peu de papier, grab un partenaire, de commencer à travailler. 947 00:45:45,530 --> 00:45:53,897 948 00:45:53,897 --> 00:45:55,605 Je vais me faire un plus gros morceau de craie. 949 00:45:55,605 --> 00:45:56,624 950 00:45:56,624 --> 00:45:58,150 Parce que ça va être beaucoup. 951 00:45:58,150 --> 00:45:59,410 952 00:45:59,410 --> 00:45:59,910 Dáccord. 953 00:45:59,910 --> 00:48:08,567 954 00:48:08,567 --> 00:48:09,150 LE PROFESSEUR: OK. 955 00:48:09,150 --> 00:48:11,599 956 00:48:11,599 --> 00:48:12,890 Commençons par la première rangée. 957 00:48:12,890 --> 00:48:14,070 958 00:48:14,070 --> 00:48:16,970 Nous allons commencer par là, puis vous les gars peut peut-être travailler un peu plus à travers. 959 00:48:16,970 --> 00:48:17,870 Dáccord. 960 00:48:17,870 --> 00:48:19,810 a est égal à b fois c Alors, quelle est une? 961 00:48:19,810 --> 00:48:21,420 962 00:48:21,420 --> 00:48:23,260 Il est pas une question piège, je le promets. 963 00:48:23,260 --> 00:48:24,440 >> L'ÉLÈVE: 4 fois 5. 964 00:48:24,440 --> 00:48:25,420 >> LE PROFESSEUR: 4 fois 5. 965 00:48:25,420 --> 00:48:25,920 20. 966 00:48:25,920 --> 00:48:26,730 Alors, quel est b? 967 00:48:26,730 --> 00:48:27,921 968 00:48:27,921 --> 00:48:28,420 L'ÉLÈVE: 4. 969 00:48:28,420 --> 00:48:30,204 970 00:48:30,204 --> 00:48:31,043 >> LE PROFESSEUR: Et c? 971 00:48:31,043 --> 00:48:31,542 L'ÉLÈVE: 5. 972 00:48:31,542 --> 00:48:32,083 LE PROFESSEUR: 5. 973 00:48:32,083 --> 00:48:35,960 Et puis ce va juste être un esperluette, esperluette b, 974 00:48:35,960 --> 00:48:38,575 c esperluette, non? 975 00:48:38,575 --> 00:48:39,728 976 00:48:39,728 --> 00:48:40,596 Pas mal. 977 00:48:40,596 --> 00:48:42,081 Il est assez simple. 978 00:48:42,081 --> 00:48:42,580 Dáccord. 979 00:48:42,580 --> 00:48:44,300 Ainsi, la suivante. 980 00:48:44,300 --> 00:48:48,725 A est égal à une fois c, dans le cas personne ne connaissait pas cela. 981 00:48:48,725 --> 00:48:49,812 982 00:48:49,812 --> 00:48:53,300 Tout le monde est familier avec le temps est égal? 983 00:48:53,300 --> 00:49:00,105 OK, tout cela désigne: ceci est raccourci pour une fois c est égal à un. 984 00:49:00,105 --> 00:49:04,840 Vous pouvez aussi le faire avec la division, avec l'addition, la soustraction. 985 00:49:04,840 --> 00:49:12,130 Vous pouvez faire un égal, ou un plus égaux c signifie un égal un plus c, une moins égal 986 00:49:12,130 --> 00:49:15,190 c serait égal à un moins c. 987 00:49:15,190 --> 00:49:16,690 Il est juste un sucre syntaxique. 988 00:49:16,690 --> 00:49:19,380 989 00:49:19,380 --> 00:49:24,140 >> Donc, dans ce cas, a est égal à une fois c seraient-nous ce que donner? 990 00:49:24,140 --> 00:49:25,910 991 00:49:25,910 --> 00:49:28,186 Encore une fois, pas une question piège. 992 00:49:28,186 --> 00:49:28,965 >> L'ÉLÈVE: 100. 993 00:49:28,965 --> 00:49:29,300 >> LE PROFESSEUR: 100. 994 00:49:29,300 --> 00:49:30,383 Est-ce que quelque chose d'autre a changé? 995 00:49:30,383 --> 00:49:31,790 996 00:49:31,790 --> 00:49:32,290 Non. 997 00:49:32,290 --> 00:49:37,380 998 00:49:37,380 --> 00:49:39,850 Peut-être que je vais enfin obtenir mieux à mes esperluette. 999 00:49:39,850 --> 00:49:42,047 >> L'ÉLÈVE: OK, désolé, comment avez-vous 100? 1000 00:49:42,047 --> 00:49:42,630 LE PROFESSEUR: OK. 1001 00:49:42,630 --> 00:49:46,594 Ainsi, a est égal à un c fois, donc une fois c. 1002 00:49:46,594 --> 00:49:48,510 L'ÉLÈVE: Oh, vous utilisez un pour le previous-- 1003 00:49:48,510 --> 00:49:49,135 LE PROFESSEUR: Oui. 1004 00:49:49,135 --> 00:49:51,450 Donc, ce sont nos valeurs les plus récentes. 1005 00:49:51,450 --> 00:49:53,990 Ce sont ce que vous devriez être l'aide que nous nous dirigeons vers le bas, OK. 1006 00:49:53,990 --> 00:49:57,290 1007 00:49:57,290 --> 00:50:01,520 Ainsi, b est la seule chose qui change, non? 1008 00:50:01,520 --> 00:50:02,910 Donc, nous allons remplir à tout le reste. 1009 00:50:02,910 --> 00:50:09,110 1010 00:50:09,110 --> 00:50:11,330 B. Quel est b va être? 1011 00:50:11,330 --> 00:50:13,020 1012 00:50:13,020 --> 00:50:14,140 Pour être ou ne pas être. 1013 00:50:14,140 --> 00:50:18,680 1014 00:50:18,680 --> 00:50:20,240 Quel est donc ce fait? 1015 00:50:20,240 --> 00:50:21,605 Quelle est la star pa faire? 1016 00:50:21,605 --> 00:50:23,280 1017 00:50:23,280 --> 00:50:25,350 >> L'ÉLÈVE: Code de l'emplacement de pa. 1018 00:50:25,350 --> 00:50:26,390 1019 00:50:26,390 --> 00:50:27,480 >> ÉTUDIANT: Non, pas tout à fait. 1020 00:50:27,480 --> 00:50:29,470 Donc, ceci est une référence d. 1021 00:50:29,470 --> 00:50:31,580 >> Etudiant: Ainsi b est la valeur équitable de pa. 1022 00:50:31,580 --> 00:50:37,340 >> LE PROFESSEUR: Oui, si pa est l'adresse d'un, non? 1023 00:50:37,340 --> 00:50:42,430 Ainsi, il est dit aller à l'endroit où a est stockée et lui donner cette valeur. 1024 00:50:42,430 --> 00:50:43,884 Alors, quelle est b? 1025 00:50:43,884 --> 00:50:44,425 L'ÉLÈVE: 100. 1026 00:50:44,425 --> 00:50:46,534 LE PROFESSEUR: 100. 1027 00:50:46,534 --> 00:50:47,450 Parfait. 1028 00:50:47,450 --> 00:50:49,879 OK, donc pc est ce qui est en train de changer. 1029 00:50:49,879 --> 00:50:51,170 Tout le reste demeure le même. 1030 00:50:51,170 --> 00:50:57,160 1031 00:50:57,160 --> 00:50:58,620 Qu'est-ce pc va être? 1032 00:50:58,620 --> 00:51:00,770 1033 00:51:00,770 --> 00:51:01,580 Une simple affectation. 1034 00:51:01,580 --> 00:51:03,520 1035 00:51:03,520 --> 00:51:05,990 Pc est égale à pa, et ce qui est pa? 1036 00:51:05,990 --> 00:51:07,049 >> L'ÉLÈVE: Ampersand un. 1037 00:51:07,049 --> 00:51:07,840 LE PROFESSEUR: Parfait. 1038 00:51:07,840 --> 00:51:09,490 1039 00:51:09,490 --> 00:51:10,740 Maintenant, nous obtenons intéressant. 1040 00:51:10,740 --> 00:51:12,310 1041 00:51:12,310 --> 00:51:15,230 OK, nous allons briser celui-ci vers le bas. 1042 00:51:15,230 --> 00:51:21,110 Tout d'abord, ce qui est b fois c, parce que ce la partie la plus facile de celui-ci, non? 1043 00:51:21,110 --> 00:51:22,360 B fois c est-- 1044 00:51:22,360 --> 00:51:23,320 >> L'ÉLÈVE: 500. 1045 00:51:23,320 --> 00:51:28,880 >> LE PROFESSEUR: Ouais, donc ce qui est un fait ce, 1046 00:51:28,880 --> 00:51:33,705 Si elle est pb étoiles, ce qui change? 1047 00:51:33,705 --> 00:51:35,320 1048 00:51:35,320 --> 00:51:37,242 >> L'ÉLÈVE: Quel est dans the-- 1049 00:51:37,242 --> 00:51:38,200 LE PROFESSEUR: Qu'est-ce en b? 1050 00:51:38,200 --> 00:51:41,340 L'ÉLÈVE: Quel est dans l'espace que pb pointe. 1051 00:51:41,340 --> 00:51:43,406 LE PROFESSEUR: Et PB pointent to-- 1052 00:51:43,406 --> 00:51:43,905 L'ÉLÈVE: B. 1053 00:51:43,905 --> 00:51:46,740 LE PROFESSEUR: B. Donc, la seule chose qui change est b, à droite. 1054 00:51:46,740 --> 00:51:50,800 Donc b fois c, 500. 1055 00:51:50,800 --> 00:51:52,367 Voilà donc ce qui change maintenant. 1056 00:51:52,367 --> 00:51:59,091 1057 00:51:59,091 --> 00:51:59,590 Laisser refroidir. 1058 00:51:59,590 --> 00:52:00,340 1059 00:52:00,340 --> 00:52:00,840 Belle. 1060 00:52:00,840 --> 00:52:01,905 Vous faites grand. 1061 00:52:01,905 --> 00:52:03,650 1062 00:52:03,650 --> 00:52:06,740 Tout droit, brisant celui-ci vers le bas. 1063 00:52:06,740 --> 00:52:08,050 1064 00:52:08,050 --> 00:52:09,630 C est en train de changer, non? 1065 00:52:09,630 --> 00:52:11,530 Ainsi, nous pouvons remplir tout le reste. 1066 00:52:11,530 --> 00:52:12,540 1067 00:52:12,540 --> 00:52:13,205 Voyons. 1068 00:52:13,205 --> 00:52:19,125 1069 00:52:19,125 --> 00:52:19,625 Dáccord. 1070 00:52:19,625 --> 00:52:21,420 1071 00:52:21,420 --> 00:52:24,740 On sait que c va être le produit de deux nombres, non? 1072 00:52:24,740 --> 00:52:26,290 1073 00:52:26,290 --> 00:52:27,980 Quelles sont les deux numéros, si? 1074 00:52:27,980 --> 00:52:28,970 >> L'ÉLÈVE: A et C? 1075 00:52:28,970 --> 00:52:31,930 >> LE PROFESSEUR: Donc un est droit pour le premier. 1076 00:52:31,930 --> 00:52:34,385 Nous sommes donc d référencement p d'un, non? 1077 00:52:34,385 --> 00:52:35,390 1078 00:52:35,390 --> 00:52:42,870 P d'un point à un, donc nous savons que cela va être 100 fois quoi? 1079 00:52:42,870 --> 00:52:46,232 Fois ce qui ne le point de pc à? 1080 00:52:46,232 --> 00:52:47,410 1081 00:52:47,410 --> 00:52:48,740 Points à une. 1082 00:52:48,740 --> 00:52:55,038 Ainsi, 100 fois 100 est 10000. 1083 00:52:55,038 --> 00:52:56,170 Est-ce que cela a un sens? 1084 00:52:56,170 --> 00:52:57,640 1085 00:52:57,640 --> 00:52:58,200 Laisser refroidir. 1086 00:52:58,200 --> 00:53:00,500 Dernière ligne droite, les gars, dernière ligne. 1087 00:53:00,500 --> 00:53:01,190 Dáccord. 1088 00:53:01,190 --> 00:53:02,160 Ce qui change ici? 1089 00:53:02,160 --> 00:53:05,640 1090 00:53:05,640 --> 00:53:06,935 >> L'ÉLÈVE: A. 1091 00:53:06,935 --> 00:53:09,435 LE PROFESSEUR: A. parfait, tout le reste peut rester le même. 1092 00:53:09,435 --> 00:53:16,210 1093 00:53:16,210 --> 00:53:16,710 Dáccord. 1094 00:53:16,710 --> 00:53:17,970 Et ce qui est une? 1095 00:53:17,970 --> 00:53:23,610 1096 00:53:23,610 --> 00:53:26,060 Donc, il ya une fois quoi? 1097 00:53:26,060 --> 00:53:27,120 Ceci est pb étoiles. 1098 00:53:27,120 --> 00:53:29,750 1099 00:53:29,750 --> 00:53:34,490 Donc pb étoiles signifie ici est pb, les points pb à b. 1100 00:53:34,490 --> 00:53:35,370 >> L'ÉLÈVE: 500. 1101 00:53:35,370 --> 00:53:36,230 >> LE PROFESSEUR: 500. 1102 00:53:36,230 --> 00:53:39,236 Nous avons donc 500 fois 100. 1103 00:53:39,236 --> 00:53:41,758 Voilà 50.000. 1104 00:53:41,758 --> 00:53:43,216 Ouf! 1105 00:53:43,216 --> 00:53:45,646 Regardez ça. 1106 00:53:45,646 --> 00:53:47,982 >> ÉTUDIANT: Pourquoi avons-nous le & c pour la last-- 1107 00:53:47,982 --> 00:53:48,690 LE PROFESSEUR: Désolé. 1108 00:53:48,690 --> 00:53:50,080 L'ÉLÈVE: Oh, OK. 1109 00:53:50,080 --> 00:53:51,600 LE PROFESSEUR: My bad. 1110 00:53:51,600 --> 00:53:52,890 Beaucoup d'écriture. 1111 00:53:52,890 --> 00:53:53,917 1112 00:53:53,917 --> 00:53:54,500 Tout le monde bien? 1113 00:53:54,500 --> 00:53:55,630 1114 00:53:55,630 --> 00:53:56,660 Pas trop mal, non? 1115 00:53:56,660 --> 00:53:58,490 Faut juste un peu tandis que de travailler à travers. 1116 00:53:58,490 --> 00:54:01,080 Si vous le décomposer, comprendre ce que chaque partie 1117 00:54:01,080 --> 00:54:03,197 se réfère to-- comme avec tout ce qu'il est, 1118 00:54:03,197 --> 00:54:05,780 yes-- décomposer à la petite problèmes et puis recombinent, 1119 00:54:05,780 --> 00:54:07,345 et vous pouvez faire des trucs super. 1120 00:54:07,345 --> 00:54:08,970 Il ya les réponses, mais nous l'avons fait. 1121 00:54:08,970 --> 00:54:10,324 1122 00:54:10,324 --> 00:54:11,115 L'arithmétique des pointeurs. 1123 00:54:11,115 --> 00:54:13,961 1124 00:54:13,961 --> 00:54:14,460 Ah. 1125 00:54:14,460 --> 00:54:15,510 Mes mains sont toutes calcaire. 1126 00:54:15,510 --> 00:54:17,970 Ainsi, en ajoutant ou en soustrayant int ajuste le pointeur 1127 00:54:17,970 --> 00:54:21,890 par la taille du type de pointeur. 1128 00:54:21,890 --> 00:54:22,940 1129 00:54:22,940 --> 00:54:28,390 Rappelez-vous comment tous les types a une taille différente? 1130 00:54:28,390 --> 00:54:34,890 Donc, comme un double ou un long long est- huit et int est de quatre, mais l'omble est un. 1131 00:54:34,890 --> 00:54:38,360 >> Donc ce que vous voulez faire est-- une chose à retenir 1132 00:54:38,360 --> 00:54:44,080 est juste que combien votre valeur du pointeur change réellement 1133 00:54:44,080 --> 00:54:46,550 dépendra de la type de pointeur, il est. 1134 00:54:46,550 --> 00:54:50,820 1135 00:54:50,820 --> 00:54:51,820 Tout le monde bien avec ce? 1136 00:54:51,820 --> 00:54:52,760 Puis-je effacer? 1137 00:54:52,760 --> 00:54:53,440 Nous sommes bons? 1138 00:54:53,440 --> 00:54:53,940 Impressionnant. 1139 00:54:53,940 --> 00:55:01,020 1140 00:55:01,020 --> 00:55:07,501 >> Donc, si nous avons un pointeur that-- cela va être-- je suis 1141 00:55:07,501 --> 00:55:08,834 va faire un pointeur int. 1142 00:55:08,834 --> 00:55:10,610 1143 00:55:10,610 --> 00:55:12,760 Il stocke ce. 1144 00:55:12,760 --> 00:55:14,210 1145 00:55:14,210 --> 00:55:20,170 Si vous deviez dire pointeur plus un, ce qu'il va faire 1146 00:55:20,170 --> 00:55:23,420 est il va mettre à jour par la taille d'un int 1147 00:55:23,420 --> 00:55:25,950 parce que ce la type de pointeur, il est. 1148 00:55:25,950 --> 00:55:28,260 >> Avec C, tout est très strict et réglementé. 1149 00:55:28,260 --> 00:55:29,440 1150 00:55:29,440 --> 00:55:35,260 Le pointeur int va mettre à jour par la quantité d'espace int prendrait. 1151 00:55:35,260 --> 00:55:36,260 Un int est de quatre octets. 1152 00:55:36,260 --> 00:55:37,650 1153 00:55:37,650 --> 00:55:39,060 >> Alors qu'est-ce que ce transformer en? 1154 00:55:39,060 --> 00:55:40,876 1155 00:55:40,876 --> 00:55:44,390 Vous êtes juste en ajoutant quatre sur cette. 1156 00:55:44,390 --> 00:55:50,040 Maintenant, votre pointeur se être-- OK. 1157 00:55:50,040 --> 00:55:51,820 1158 00:55:51,820 --> 00:55:55,380 >> Donc, si elle était char et nous avons fait pointeur plus un, quel serait-il maintenant? 1159 00:55:55,380 --> 00:56:00,300 1160 00:56:00,300 --> 00:56:03,330 Si il started-- prétendant nous started-- maintenant il est 0x08. 1161 00:56:03,330 --> 00:56:04,850 1162 00:56:04,850 --> 00:56:10,850 Disons maintenant que ce fut une carboniser pointeur, et nous avons ajouté un. 1163 00:56:10,850 --> 00:56:11,850 Que faudrait-il changer pour? 1164 00:56:11,850 --> 00:56:14,989 1165 00:56:14,989 --> 00:56:16,030 Combien d'octets est de type char? 1166 00:56:16,030 --> 00:56:16,680 >> PUBLIC: Un. 1167 00:56:16,680 --> 00:56:17,304 >> ENCEINTE 1: One. 1168 00:56:17,304 --> 00:56:18,309 Auditoire: Alors 0x09. 1169 00:56:18,309 --> 00:56:19,600 ENCEINTE 1: Il serait donc neuf. 1170 00:56:19,600 --> 00:56:22,571 1171 00:56:22,571 --> 00:56:23,820 Il suffit donc de quelque chose à retenir. 1172 00:56:23,820 --> 00:56:28,340 Juste au moment où vous ajoutez un, il est pas l'ajout d'un moins que ce soit un produit de carbonisation. 1173 00:56:28,340 --> 00:56:34,190 Il est l'ajout combien octets type que ce soit, 1174 00:56:34,190 --> 00:56:36,960 qui est pourquoi nous avons cette équation ici. 1175 00:56:36,960 --> 00:56:40,190 Il est donc temps int la taille du type de pointeur. 1176 00:56:40,190 --> 00:56:42,850 1177 00:56:42,850 --> 00:56:44,730 >> Donc, nous avons l'exemple ici. 1178 00:56:44,730 --> 00:56:47,250 1179 00:56:47,250 --> 00:56:54,430 y a été affecté à cette valeur, 0x4, quand nous avons fait plus de y est égal à un. 1180 00:56:54,430 --> 00:56:56,830 Qu'y at-il, ce qui est en x, ne change pas. 1181 00:56:56,830 --> 00:56:58,610 Qu'est-ce que le changement est ce qui est dans y. 1182 00:56:58,610 --> 00:57:04,980 L'adresse stockée dans Y mise à jour en quatre parce qu'il ya quatre octets dans un int 1183 00:57:04,980 --> 00:57:06,097 et il est un pointeur int. 1184 00:57:06,097 --> 00:57:07,290 1185 00:57:07,290 --> 00:57:07,790 >> Bien. 1186 00:57:07,790 --> 00:57:09,123 Nous avons donc maintenant un autre exercice. 1187 00:57:09,123 --> 00:57:11,140 1188 00:57:11,140 --> 00:57:13,500 Donc la question est ce qui sera imprimé. 1189 00:57:13,500 --> 00:57:36,710 1190 00:57:36,710 --> 00:57:37,650 Toutes les idées? 1191 00:57:37,650 --> 00:57:41,690 1192 00:57:41,690 --> 00:57:43,699 >> AUDIENCE: Le nombre de personnages de chat heureux? 1193 00:57:43,699 --> 00:57:44,490 ENCEINTE 1: Exactement. 1194 00:57:44,490 --> 00:57:45,531 Donc, comme avec votre chaîne. 1195 00:57:45,531 --> 00:57:47,302 1196 00:57:47,302 --> 00:57:48,260 Est-ce que tout le monde vous cela? 1197 00:57:48,260 --> 00:57:49,509 Voulons-nous de marcher à travers elle? 1198 00:57:49,509 --> 00:57:50,300 1199 00:57:50,300 --> 00:57:52,010 >> Oui, OK. 1200 00:57:52,010 --> 00:57:57,385 Donc, ce que nous avons ici-- je comme ce d'autant plus. 1201 00:57:57,385 --> 00:57:59,340 Je n'ai pas à [Inaudible] ridiculement. 1202 00:57:59,340 --> 00:58:01,690 >> Donc, nous avons notre chaîne ici, chat heureux. 1203 00:58:01,690 --> 00:58:02,950 Belle. 1204 00:58:02,950 --> 00:58:05,080 Nous avons une certaine compteur nous gardons la trace. 1205 00:58:05,080 --> 00:58:11,430 Nous avons donc une certaine char * pointeur que tout est réglé égal à Str. 1206 00:58:11,430 --> 00:58:14,320 Qu'est-ce que ce fait est qu'il est attribuer certains pointeur 1207 00:58:14,320 --> 00:58:16,380 au début de votre chaîne. 1208 00:58:16,380 --> 00:58:19,840 Parce que je suis sûr que, comme il il a été mentionné dans la leçon, 1209 00:58:19,840 --> 00:58:22,290 nous vous avons donné ce gars type de données appelé chaîne. 1210 00:58:22,290 --> 00:58:29,070 >> Mais vraiment chaînes sont juste un tableau de-- comme char *. 1211 00:58:29,070 --> 00:58:32,330 Il est un pointeur sur un tas de personnages qui sont contiguës dans la mémoire. 1212 00:58:32,330 --> 00:58:33,680 1213 00:58:33,680 --> 00:58:36,280 Donc, cela crée seulement il égal à une chaîne est 1214 00:58:36,280 --> 00:58:38,980 identifié par où Le premier caractère est. 1215 00:58:38,980 --> 00:58:42,710 Donc, cela est couchait un certain point égal au début de la chaîne. 1216 00:58:42,710 --> 00:58:44,130 Tout le monde il bon? 1217 00:58:44,130 --> 00:58:44,960 Laisser refroidir. 1218 00:58:44,960 --> 00:58:49,840 >> Donc, ce déréférencement est notre pointeur. 1219 00:58:49,840 --> 00:58:53,760 Donc, il va vraiment nous donner une certaine valeur ici, 1220 00:58:53,760 --> 00:58:55,610 dans notre chaîne que nous parlons. 1221 00:58:55,610 --> 00:58:58,342 Et nous disons aussi longtemps que il est pas terminaison nulle. 1222 00:58:58,342 --> 00:59:00,550 Donc, continuez jusqu'à ce que vous obtenez à la fin de la chaîne. 1223 00:59:00,550 --> 00:59:02,180 1224 00:59:02,180 --> 00:59:04,190 Mettez à jour votre pointeur par un. 1225 00:59:04,190 --> 00:59:09,250 Donc r, il sera effectivement mise à jour par un à chaque fois parce que cela est un char, 1226 00:59:09,250 --> 00:59:09,820 le char *. 1227 00:59:09,820 --> 00:59:10,930 1228 00:59:10,930 --> 00:59:12,340 >> Donc ça va passer. 1229 00:59:12,340 --> 00:59:13,290 Il va mettre à jour. 1230 00:59:13,290 --> 00:59:16,705 Donc, la première fois cela va, il va être ici à h. 1231 00:59:16,705 --> 00:59:17,590 Il va mettre à jour. 1232 00:59:17,590 --> 00:59:18,185 >> Ce sera un un. 1233 00:59:18,185 --> 00:59:21,310 Ça va être un p, y, et ainsi de suite et ainsi de suite. 1234 00:59:21,310 --> 00:59:22,300 Nous mettrons à jour compteur. 1235 00:59:22,300 --> 00:59:26,160 Quand il atteint la fin, il imprime à quel point il est obtenu. 1236 00:59:26,160 --> 00:59:27,550 1237 00:59:27,550 --> 00:59:28,050 Oui. 1238 00:59:28,050 --> 00:59:31,475 >> PUBLIC: Ce compte l'espace comme un seul, non? 1239 00:59:31,475 --> 00:59:31,974 Dáccord. 1240 00:59:31,974 --> 00:59:34,294 1241 00:59:34,294 --> 00:59:35,222 >> ENCEINTE 1: Pensez donc. 1242 00:59:35,222 --> 00:59:36,830 Est-ce une question-- 1243 00:59:36,830 --> 00:59:37,746 >> PUBLIC: [inaudible]. 1244 00:59:37,746 --> 00:59:37,968 1245 00:59:37,968 --> 00:59:38,884 >> ENCEINTE 1: Pas de soucis. 1246 00:59:38,884 --> 00:59:39,720 1247 00:59:39,720 --> 00:59:42,736 Ce que je fais. 1248 00:59:42,736 --> 00:59:47,710 Très bien, alors une chose que je comprendre est que, avec un tableau, 1249 00:59:47,710 --> 00:59:51,736 vous pouvez aussi le traiter comme un pointeur car les tableaux ne sont que 1250 00:59:51,736 --> 00:59:52,860 taches continues de mémoire. 1251 00:59:52,860 --> 00:59:53,970 1252 00:59:53,970 --> 00:59:56,380 >> Ainsi, vous pouvez traiter de la même façon. 1253 00:59:56,380 --> 00:59:59,000 Vous pouvez les manipuler avec des pointeurs, trop. 1254 00:59:59,000 --> 01:00:04,770 Ainsi, au lieu de faire, dans ce cas, la chose analogue 1255 01:00:04,770 --> 01:00:07,490 serait gamme 0 est égal à 1. 1256 01:00:07,490 --> 01:00:08,760 1257 01:00:08,760 --> 01:00:15,210 >> Mais de la même façon que une chaîne est déterminée 1258 01:00:15,210 --> 01:00:18,740 par le début de l'endroit où Le premier caractère est, 1259 01:00:18,740 --> 01:00:22,270 un tableau est déterminée par où son premier élément est. 1260 01:00:22,270 --> 01:00:25,120 Parce que nous savons, nous sommes garanti, que ceux-ci 1261 01:00:25,120 --> 01:00:27,985 vont être continu des blocs de mémoire. 1262 01:00:27,985 --> 01:00:29,360 Voilà ce que nous permet de faire cela. 1263 01:00:29,360 --> 01:00:31,193 Nous savons qu'ils sont en continu des blocs de mémoire. 1264 01:00:31,193 --> 01:00:32,230 1265 01:00:32,230 --> 01:00:36,500 >> Donc dans ce cas, par le déréférencement juste tableau, qui nous dit, 1266 01:00:36,500 --> 01:00:40,800 OK, aller au début de votre tableau, ce qui est ici. 1267 01:00:40,800 --> 01:00:42,640 Ainsi, vous pouvez régler égal à un. 1268 01:00:42,640 --> 01:00:48,610 Et dans ce cas, quel que soit votre choix type est, lorsque vous mettez à jour un, 1269 01:00:48,610 --> 01:00:50,830 qui est comme la mise à jour pour l'index suivant. 1270 01:00:50,830 --> 01:00:52,760 1271 01:00:52,760 --> 01:00:56,360 Vous pouvez le faire parce que vous savoir ce qui est dans votre tableau. 1272 01:00:56,360 --> 01:00:59,770 Donc, il sait combien de mettre à jour votre pointeur par, 1273 01:00:59,770 --> 01:01:02,925 quelle adresse le mettre à jour afin de que vous êtes à l'emplacement suivant. 1274 01:01:02,925 --> 01:01:04,740 1275 01:01:04,740 --> 01:01:09,400 >> Donc, ceci est juste une façon différente de la rédaction de tableau 0 est égal à 1, 1276 01:01:09,400 --> 01:01:15,114 tableau 1 est égal à 2, tableau support 2 est égal à 3. 1277 01:01:15,114 --> 01:01:16,780 Il est juste une autre façon de penser. 1278 01:01:16,780 --> 01:01:19,600 Parce qu'ils sont continues blocs dans la mémoire, 1279 01:01:19,600 --> 01:01:21,830 vous pouvez vous référer à eux, soit par le réseau notation-- 1280 01:01:21,830 --> 01:01:24,390 qui je personnellement easier-- trouver mais peut-être 1281 01:01:24,390 --> 01:01:27,347 vous devez manipuler strictement par des adresses de mémoire. 1282 01:01:27,347 --> 01:01:28,930 Et ceci est la façon dont vous souhaitez le faire. 1283 01:01:28,930 --> 01:01:30,630 1284 01:01:30,630 --> 01:01:32,630 Genre de plus de comme un Ce qui est cool que vous pouvez faire 1285 01:01:32,630 --> 01:01:35,213 contre peut-être pas quelque chose que vous êtes passe réellement à mettre en œuvre. 1286 01:01:35,213 --> 01:01:36,960 1287 01:01:36,960 --> 01:01:38,630 >> Je l'utilise en 61. 1288 01:01:38,630 --> 01:01:41,710 Vous les gars ne peuvent sans doute pas besoin à vous soucier de trop. 1289 01:01:41,710 --> 01:01:43,693 Mais si vous êtes intéressé, prendre 61 l'année prochaine. 1290 01:01:43,693 --> 01:01:45,269 1291 01:01:45,269 --> 01:01:46,560 Nous sommes dans les gars à la maison d'étirement. 1292 01:01:46,560 --> 01:01:47,510 Je sais, il est long. 1293 01:01:47,510 --> 01:01:50,570 1294 01:01:50,570 --> 01:01:58,880 Dynamic Memory Allocation-- si nous savons que l'un 1295 01:01:58,880 --> 01:02:01,790 des choses lorsque nous avons parlé au cours de notre première section ensemble, 1296 01:02:01,790 --> 01:02:04,560 nous avons examiné un swap fonction où il était 1297 01:02:04,560 --> 01:02:08,010 en dehors de la portée de notre fonction principale. 1298 01:02:08,010 --> 01:02:14,370 Et nous étions de passage dans ces valeurs qui étaient effectivement des copies. 1299 01:02:14,370 --> 01:02:20,570 >> Et une fois terminé échange d'exécution, elle vient de quitter une pile. 1300 01:02:20,570 --> 01:02:22,830 Rappelez-vous, nous avons une empiler cadre de swap. 1301 01:02:22,830 --> 01:02:26,070 Il laisse et ceux valeurs partent avec elle. 1302 01:02:26,070 --> 01:02:27,050 Et ils étaient partis. 1303 01:02:27,050 --> 01:02:28,615 Nous ne pouvions rien faire avec eux et nous étions tristes 1304 01:02:28,615 --> 01:02:29,989 parce que nous ne pouvons pas échanger nos valeurs. 1305 01:02:29,989 --> 01:02:31,070 1306 01:02:31,070 --> 01:02:36,560 >> Mais avec C, comme je le disais, vous avoir beaucoup de pouvoir sur la mémoire. 1307 01:02:36,560 --> 01:02:43,310 Donc ce que vous pouvez faire vous est possible allouer des choses sur le tas ici 1308 01:02:43,310 --> 01:02:46,830 qui y resteront jusqu'à ce que vous leur dites autrement. 1309 01:02:46,830 --> 01:02:48,280 >> Ils sont comme de bons enfants. 1310 01:02:48,280 --> 01:02:49,150 Ils y restent. 1311 01:02:49,150 --> 01:02:50,270 Ils ne partent pas. 1312 01:02:50,270 --> 01:02:52,750 Ils vont y rester jusqu'à ce que vous êtes comme, OK, vous pouvez aller. 1313 01:02:52,750 --> 01:02:55,920 >> Alors que les choses sur la pile, who-- ils sont comme des enfants désobéissants. 1314 01:02:55,920 --> 01:02:59,160 Ils vont juste fuir quand vous voulez d'être là et puis ils sont partis. 1315 01:02:59,160 --> 01:03:00,160 Vous ne pouvez pas les récupérer. 1316 01:03:00,160 --> 01:03:01,350 1317 01:03:01,350 --> 01:03:07,187 >> Ainsi, le tas est-- nous allons parler de malloc et free, qui 1318 01:03:07,187 --> 01:03:08,895 Je suis sûr que vous les gars entendu parler en conférence. 1319 01:03:08,895 --> 01:03:10,270 1320 01:03:10,270 --> 01:03:14,210 Et qui est essentiellement un moyen de disposer de données très persistantes. 1321 01:03:14,210 --> 01:03:18,920 Ainsi, vous pouvez conserver les données aussi longtemps que vous le souhaitez. 1322 01:03:18,920 --> 01:03:19,546 Hum. 1323 01:03:19,546 --> 01:03:21,475 >> Public: Pouvez-vous définir tas et la pile? 1324 01:03:21,475 --> 01:03:24,030 Sont-ils aiment endroits pour mettre les choses? 1325 01:03:24,030 --> 01:03:26,630 >> ENCEINTE 1: Ils sont donc essentiellement just-- ils sont 1326 01:03:26,630 --> 01:03:29,530 la façon dont nous parlons juste de mémoire. 1327 01:03:29,530 --> 01:03:37,300 Donc tas est des lieux où les la mémoire est allouée dynamiquement, 1328 01:03:37,300 --> 01:03:40,960 alors que la pile se réfère plus d'empiler les cadres 1329 01:03:40,960 --> 01:03:45,950 qui ne sont plus au centre de la fonctions qui sont effectivement en cours d'exécution. 1330 01:03:45,950 --> 01:03:47,200 Vous ne devez pas vraiment de contrôle. 1331 01:03:47,200 --> 01:03:50,690 >> La grande différence, vous avez le contrôle sur le tas si vous voulez. 1332 01:03:50,690 --> 01:03:52,710 Vous avez moins de contrôle sur la pile. 1333 01:03:52,710 --> 01:03:55,030 La pile dépend de la fonctions qui sont en cours d'exécution, 1334 01:03:55,030 --> 01:03:58,320 et l'ordre dans lequel ils sont courent, et comment les choses sont retournés. 1335 01:03:58,320 --> 01:04:01,290 Alors qu'avec le tas, comme nous allons le voir, vous pouvez dire, 1336 01:04:01,290 --> 01:04:06,639 OK, je veux que cette valeur soit autour jusqu'à ce que je vous dis le contraire. 1337 01:04:06,639 --> 01:04:08,180 Vous n'êtes pas autorisé à se débarrasser de lui. 1338 01:04:08,180 --> 01:04:09,300 Vous n'êtes pas autorisé à remplacer. 1339 01:04:09,300 --> 01:04:11,675 Vous allez garder autour aussi longtemps que je vous dis. 1340 01:04:11,675 --> 01:04:15,780 Vous arrivez à être le patron dans le tas, alors que la stack-- peut-être si vous 1341 01:04:15,780 --> 01:04:18,080 comme finagle votre chemin vous pouvez être le patron. 1342 01:04:18,080 --> 01:04:19,340 Mais pas tout à fait. 1343 01:04:19,340 --> 01:04:20,480 1344 01:04:20,480 --> 01:04:22,070 Et il est vraiment juste mémoire. 1345 01:04:22,070 --> 01:04:24,260 Il est juste de différentes façons de faire référence à la mémoire. 1346 01:04:24,260 --> 01:04:25,800 1347 01:04:25,800 --> 01:04:26,400 >> Laisser refroidir. 1348 01:04:26,400 --> 01:04:28,630 Donc, avec cela, comment contrôler votre mémoire. 1349 01:04:28,630 --> 01:04:32,070 Il est avec malloc, qui vous allez apprendre à utiliser. 1350 01:04:32,070 --> 01:04:37,100 Donc, il est un peu moins pour l'allocation de mémoire. 1351 01:04:37,100 --> 01:04:38,459 Voilà tout ce qu'il est. 1352 01:04:38,459 --> 01:04:41,250 Il ya un tas d'autres frais fonctions qui ont alloc à la fin, 1353 01:04:41,250 --> 01:04:42,750 et qu'ils représentent des choses différentes. 1354 01:04:42,750 --> 01:04:43,550 1355 01:04:43,550 --> 01:04:49,050 >> Ainsi, lorsque vous avez besoin de stockage qui doit pour survivre à votre fonction actuelle pour 1356 01:04:49,050 --> 01:04:51,010 que lorsque votre actuel fonction fuit, 1357 01:04:51,010 --> 01:04:55,774 vous avez encore les données que vous obtenu de lui, vous souhaitez utiliser malloc. 1358 01:04:55,774 --> 01:04:57,190 Ça initialiser sur le tas. 1359 01:04:57,190 --> 01:05:00,140 Et comme je l'ai dit et continue dire, vous allez continuer à y 1360 01:05:00,140 --> 01:05:03,050 jusqu'à ce que vous arrêtiez, qui est la chose importante ici. 1361 01:05:03,050 --> 01:05:08,450 >> Donc, une chose à remarquer, et qui est généralement très important, 1362 01:05:08,450 --> 01:05:13,620 est ce que sizeof est super utile à utiliser 1363 01:05:13,620 --> 01:05:16,440 parce que, selon le type de la machine que vous utilisez, 1364 01:05:16,440 --> 01:05:22,470 il peut avoir des quantités variables de mémoire qu'il faut. 1365 01:05:22,470 --> 01:05:26,870 Donc, vous voulez toujours utiliser la taille de sorte que vous n'êtes pas dépend de la machine, 1366 01:05:26,870 --> 01:05:30,300 afin que votre code fonctionner sur une machine. 1367 01:05:30,300 --> 01:05:32,360 >> Et qui est juste partie d'écrire du bon code. 1368 01:05:32,360 --> 01:05:34,610 Si cela fonctionne sur une machine, mais aucun des autres, 1369 01:05:34,610 --> 01:05:36,440 Quelle était l'utilité de votre programme? 1370 01:05:36,440 --> 01:05:38,420 Donc, vous voulez toujours assurez-vous et utiliser sizeof. 1371 01:05:38,420 --> 01:05:41,306 >> PUBLIC: est donc que, comme le taille de 10 pouces [inaudible]? 1372 01:05:41,306 --> 01:05:43,698 >> ENCEINTE 1: Ceci est la taille de 10 ints. 1373 01:05:43,698 --> 01:05:44,197 ouais. 1374 01:05:44,197 --> 01:05:45,360 1375 01:05:45,360 --> 01:05:48,830 Donc la taille d'entiers sera de retour combien peut-on prendre int. 1376 01:05:48,830 --> 01:05:51,530 Ou la taille de char, comment coûte une prise char. 1377 01:05:51,530 --> 01:05:54,150 Et puis le nombre de blocs de ce que vous voulez? 1378 01:05:54,150 --> 01:05:57,590 >> Donc dans ce cas, nous voulons quelque chose que nous pouvons stocker 10 ints à. 1379 01:05:57,590 --> 01:06:00,240 Et cela va fonctionner indépendamment de la machine, ce qui est cool. 1380 01:06:00,240 --> 01:06:01,720 1381 01:06:01,720 --> 01:06:04,846 Alors combien d'octets sera que réellement vous donner? 1382 01:06:04,846 --> 01:06:06,190 Calcul rapide. 1383 01:06:06,190 --> 01:06:06,787 >> Public: 40. 1384 01:06:06,787 --> 01:06:07,370 ENCEINTE 1: 40. 1385 01:06:07,370 --> 01:06:07,869 Exactement. 1386 01:06:07,869 --> 01:06:09,520 1387 01:06:09,520 --> 01:06:12,030 Donc, une autre grande chose. 1388 01:06:12,030 --> 01:06:14,840 Pointeur ou malloc peuvent retourner null. 1389 01:06:14,840 --> 01:06:17,910 >> Encore une fois, vérifiez toujours voir si elle retourne null 1390 01:06:17,910 --> 01:06:19,620 avant d'essayer de faire quelque chose avec elle. 1391 01:06:19,620 --> 01:06:23,430 1392 01:06:23,430 --> 01:06:27,350 Si vous essayez de déréférencer ce pointeur maintenant, 1393 01:06:27,350 --> 01:06:29,720 il va tout simplement une erreur de segmentation parce que vous êtes allé et essayé 1394 01:06:29,720 --> 01:06:31,730 toucher nulle quand vous ne devriez pas avoir. 1395 01:06:31,730 --> 01:06:34,000 Il faut donc toujours vérifier nulle. 1396 01:06:34,000 --> 01:06:36,075 Encore une fois, tout ce que vous pouvez faire. 1397 01:06:36,075 --> 01:06:38,300 1398 01:06:38,300 --> 01:06:39,720 >> Il pourrait retourner null. 1399 01:06:39,720 --> 01:06:42,740 Il reviendra null si vous êtes soit d'espace, ou pour toute autre raison 1400 01:06:42,740 --> 01:06:44,350 il a couru dans un bug de mémoire. 1401 01:06:44,350 --> 01:06:45,890 1402 01:06:45,890 --> 01:06:47,510 Il revient parfois juste nul. 1403 01:06:47,510 --> 01:06:48,990 Donc, vous avez juste à vérifier pour elle. 1404 01:06:48,990 --> 01:06:51,050 Voilà tout ce diaporama dit. 1405 01:06:51,050 --> 01:06:53,366 1406 01:06:53,366 --> 01:06:55,240 Et puis ce que nous avons ici est un appel à libérer. 1407 01:06:55,240 --> 01:07:00,550 Ainsi, de la même manière que si l'on ouvrir un fichier, vous devez fermer un fichier, 1408 01:07:00,550 --> 01:07:04,340 si vous la mémoire malloc, vous devez vous libérer cette mémoire. 1409 01:07:04,340 --> 01:07:06,530 Et vous les gars obtenir de faire des trucs vraiment cool. 1410 01:07:06,530 --> 01:07:09,624 >> Et il ya un programme que vous pouvez exécuter à voir si vous êtes toujours fuite de mémoire. 1411 01:07:09,624 --> 01:07:11,040 Mais vous ne voulez pas perdre la mémoire. 1412 01:07:11,040 --> 01:07:11,820 Il est vraiment mauvais. 1413 01:07:11,820 --> 01:07:13,191 1414 01:07:13,191 --> 01:07:15,020 Situé à gâcher les choses. 1415 01:07:15,020 --> 01:07:20,939 >> Il est mauvais de faire exactement comme la programmation sage pour l'efficacité de la conception. 1416 01:07:20,939 --> 01:07:22,980 Mais il est aussi juste genre de mauvais pour votre ordinateur. 1417 01:07:22,980 --> 01:07:26,780 Tant de choses juste gratuits quand vous les malloc. 1418 01:07:26,780 --> 01:07:28,190 1419 01:07:28,190 --> 01:07:30,210 >> Vous vu les symétries ici. 1420 01:07:30,210 --> 01:07:31,180 Super simple. 1421 01:07:31,180 --> 01:07:33,010 Juste libre et puis Quel que soit votre pointeur, 1422 01:07:33,010 --> 01:07:34,843 quel que soit le nom de le pointeur est, et il 1423 01:07:34,843 --> 01:07:36,710 prendra soin de le libérer pour vous. 1424 01:07:36,710 --> 01:07:38,200 1425 01:07:38,200 --> 01:07:38,700 Laisser refroidir. 1426 01:07:38,700 --> 01:07:40,410 1427 01:07:40,410 --> 01:07:42,530 >> Ensuite, nous avons cela. 1428 01:07:42,530 --> 01:07:44,770 Donc, nous allons juste marcher à travers ce programme. 1429 01:07:44,770 --> 01:07:46,560 Et puis vous aurez fini. 1430 01:07:46,560 --> 01:07:50,240 >> Donc, [inaudible] juste principale. 1431 01:07:50,240 --> 01:07:51,690 Nous avons donc des int * pointeur. 1432 01:07:51,690 --> 01:07:53,648 Nous avons donc un pointeur que ça va tenir ints. 1433 01:07:53,648 --> 01:07:54,500 1434 01:07:54,500 --> 01:07:56,170 Et combien ints que ça va tenir? 1435 01:07:56,170 --> 01:07:57,400 1436 01:07:57,400 --> 01:07:58,170 Juste une. 1437 01:07:58,170 --> 01:07:59,400 1438 01:07:59,400 --> 01:08:01,100 Taille d'un int. 1439 01:08:01,100 --> 01:08:03,900 >> Nous vérifions pour voir si pointeur est nul parce qu'il 1440 01:08:03,900 --> 01:08:06,130 est, nous voulons dire ne rien faire. 1441 01:08:06,130 --> 01:08:07,065 Il est mauvais. 1442 01:08:07,065 --> 01:08:08,130 1443 01:08:08,130 --> 01:08:12,130 Donc, nous imprimons une erreur de mémoire, reviennent le plus souvent 1, 1444 01:08:12,130 --> 01:08:14,260 comme vous les gars sont habitués. 1445 01:08:14,260 --> 01:08:17,390 >> Et puis nous avons ici, nous déréférencer notre pointeur. 1446 01:08:17,390 --> 01:08:22,840 Cela signifie donc que nous allons stocker quelque chose à l'endroit qui nous est donnée. 1447 01:08:22,840 --> 01:08:24,350 1448 01:08:24,350 --> 01:08:30,830 Int * pointeur, ou malloc, renvoie le adresse de l'endroit où elle a mis de côté cette 1449 01:08:30,830 --> 01:08:31,750 mémoire pour vous. 1450 01:08:31,750 --> 01:08:32,830 1451 01:08:32,830 --> 01:08:34,800 Donc, il est fondamentalement vous donnant like-- si vous 1452 01:08:34,800 --> 01:08:38,149 penser à un tas de maisons dans un quartier 1453 01:08:38,149 --> 01:08:40,640 que vous voulez mettre vos meubles, malloc 1454 01:08:40,640 --> 01:08:43,850 est comme OK, vous obtenez d'aller à la maison trois. 1455 01:08:43,850 --> 01:08:45,800 Et il vous le donne adresse de la maison de trois. 1456 01:08:45,800 --> 01:08:48,775 >> Donc, ce droit maintenant, ce magasins de pointeur une adresse, 1457 01:08:48,775 --> 01:08:50,149 stocke l'adresse de votre maison. 1458 01:08:50,149 --> 01:08:51,470 1459 01:08:51,470 --> 01:08:54,640 * moyens de ptr, OK, je suis chez moi. 1460 01:08:54,640 --> 01:08:55,326 Laisser refroidir. 1461 01:08:55,326 --> 01:08:56,580 Je dois obtenir un entier. 1462 01:08:56,580 --> 01:08:59,229 >> Donc, vous demandez à quelqu'un pour vous donner des meubles maintenant. 1463 01:08:59,229 --> 01:09:00,430 Ainsi, vous obtenez un certain int. 1464 01:09:00,430 --> 01:09:05,100 Et il met dans votre pointeur où il pointe vers. 1465 01:09:05,100 --> 01:09:08,670 >> Et alors il a juste gravures , vous avez entré partout. 1466 01:09:08,670 --> 01:09:11,060 Et encore, la référence. 1467 01:09:11,060 --> 01:09:15,649 Donc, cela est comme vous êtes allé à cette adresse et vous avez vu ce qu'il y avait. 1468 01:09:15,649 --> 01:09:17,120 1469 01:09:17,120 --> 01:09:17,630 Cool? 1470 01:09:17,630 --> 01:09:20,174 >> Et puis bien sûr, nous libérons notre pointeur. 1471 01:09:20,174 --> 01:09:21,590 Ne pas oublier de libérer votre pointeur. 1472 01:09:21,590 --> 01:09:22,933 Ne pas oublier de vérifier la valeur NULL. 1473 01:09:22,933 --> 01:09:24,349 Ne pas oublier de libérer votre pointeur. 1474 01:09:24,349 --> 01:09:27,270 Vous avez deux choses vous vous souvenez de ce, ou que vous devriez vous rappeler. 1475 01:09:27,270 --> 01:09:27,770 Oui. 1476 01:09:27,770 --> 01:09:31,590 PUBLIC: [inaudible] des trucs comme ça, le char * s. 1477 01:09:31,590 --> 01:09:33,760 Comment se fait-il que nous ne libérons ceux-là? 1478 01:09:33,760 --> 01:09:34,529 >> ENCEINTE 1: Hm? 1479 01:09:34,529 --> 01:09:36,450 >> Public: Est-ce ceux qui, comme les chaînes? 1480 01:09:36,450 --> 01:09:39,160 Vous avez dit chaînes sont comme char * s, non? 1481 01:09:39,160 --> 01:09:41,200 Alors, pourquoi ne nous libérons pas les chaînes? 1482 01:09:41,200 --> 01:09:43,204 >> ENCEINTE 1: Vous seulement gratuit si vous allouer de. 1483 01:09:43,204 --> 01:09:44,620 PUBLIC: Oh, si vous allouer de. 1484 01:09:44,620 --> 01:09:47,399 ENCEINTE 1: Alors malloc et libre sont deux choses 1485 01:09:47,399 --> 01:09:49,000 que vous devez toujours avoir ensemble. 1486 01:09:49,000 --> 01:09:51,630 f ouvert, f près, deux choses vous devriez avoir ensemble. 1487 01:09:51,630 --> 01:09:54,471 Dans ces deux cas, vérifiez nulle. 1488 01:09:54,471 --> 01:09:54,971 Oui. 1489 01:09:54,971 --> 01:09:57,130 >> AUDIENCE: Le libre est juste permettant autre chose 1490 01:09:57,130 --> 01:09:59,690 pour y être stocké après ce programme a utilisé? 1491 01:09:59,690 --> 01:10:01,946 >> ENCEINTE 1: Il est juste de dire, OK, je suis fait avec cette. 1492 01:10:01,946 --> 01:10:03,320 Vous ne devez garder autour. 1493 01:10:03,320 --> 01:10:05,340 1494 01:10:05,340 --> 01:10:08,190 Sinon votre ordinateur juste comme essayer de l'y maintenir. 1495 01:10:08,190 --> 01:10:10,910 Et puis vous can't-- il fonctionne dans les problèmes de mémoire plus tard. 1496 01:10:10,910 --> 01:10:13,660 Vous voulez toujours pour le libérer parce que il indique à votre ordinateur, OK, je suis 1497 01:10:13,660 --> 01:10:15,190 fait avec ce lieu de mémoire. 1498 01:10:15,190 --> 01:10:17,190 Vous pouvez le récupérer pour moi d'utiliser plus tard. 1499 01:10:17,190 --> 01:10:19,250 1500 01:10:19,250 --> 01:10:20,500 Cool? 1501 01:10:20,500 --> 01:10:21,320 Oui. 1502 01:10:21,320 --> 01:10:26,950 >> Auditoire: Alors, nous avons utilisé le% d juste car un double qui va revenir, 1503 01:10:26,950 --> 01:10:28,330 ou pourquoi est-- [inaudible]. 1504 01:10:28,330 --> 01:10:30,170 1505 01:10:30,170 --> 01:10:31,620 >> Public: Pouvez-vous utiliser% i? 1506 01:10:31,620 --> 01:10:32,760 >> ENCEINTE 1: Vous pouvez utiliser% i. 1507 01:10:32,760 --> 01:10:35,052 1508 01:10:35,052 --> 01:10:36,135 Les dernières questions minute? 1509 01:10:36,135 --> 01:10:38,310 1510 01:10:38,310 --> 01:10:38,985 Aller de l'avant. 1511 01:10:38,985 --> 01:10:40,610 PUBLIC: Je viens de poser une question rapide. 1512 01:10:40,610 --> 01:10:50,200 Donc, la variable ptr, that's-- comme, avec l'int * ptr = malloc, 1513 01:10:50,200 --> 01:10:54,142 qui est juste de dire qu'il est pointant vers un endroit dans memory-- 1514 01:10:54,142 --> 01:10:55,600 ENCEINTE 1: Voulez-vous [inaudible]? 1515 01:10:55,600 --> 01:10:58,050 PUBLIC: --Que est la taille de-- pas, il est OK. 1516 01:10:58,050 --> 01:11:01,292 Mais il est juste pointant vers un endroit dans mémoire qui est comme quatre octets. 1517 01:11:01,292 --> 01:11:02,000 ENCEINTE 1: Droit. 1518 01:11:02,000 --> 01:11:03,030 1519 01:11:03,030 --> 01:11:07,070 Donc malloc la taille de int dit, OK, je vais aller de ruissellement, 1520 01:11:07,070 --> 01:11:08,780 trouver quatre octets de mémoire pour vous. 1521 01:11:08,780 --> 01:11:10,700 Quand il trouve que quatre octets de mémoire, il 1522 01:11:10,700 --> 01:11:14,030 vous rend l'adresse de l'endroit où il commence, 1523 01:11:14,030 --> 01:11:16,160 et qui est ce stockée pointeur, ou ptr. 1524 01:11:16,160 --> 01:11:17,510 1525 01:11:17,510 --> 01:11:18,010 Bon. 1526 01:11:18,010 --> 01:11:18,742 1527 01:11:18,742 --> 01:11:21,700 Vous avez l'air moins confus que la plupart les gens quand je parle, pointeur 1528 01:11:21,700 --> 01:11:23,670 donc je me sens très bien en ce moment. 1529 01:11:23,670 --> 01:11:24,520 >> Bien. 1530 01:11:24,520 --> 01:11:27,960 Comme toujours, vous les gars devraient avoir tout obtenu vos qualités de pset2 maintenant. 1531 01:11:27,960 --> 01:11:32,769 Je sais qu'il ya eu une certaine bancal choses où il est dit, formule pas valide 1532 01:11:32,769 --> 01:11:33,310 ou quelque chose. 1533 01:11:33,310 --> 01:11:36,166 Si vous obtenez ce que, tout de vos notes sont valables de mon côté. 1534 01:11:36,166 --> 01:11:38,040 Donc, je peux vous envoyer captures d'écran de vos notes. 1535 01:11:38,040 --> 01:11:39,011 1536 01:11:39,011 --> 01:11:41,760 Laissez-moi savoir ainsi si vous êtes manquant pas de qualités ou quelque chose 1537 01:11:41,760 --> 01:11:43,060 ne semble pas avoir de sens. 1538 01:11:43,060 --> 01:11:43,720 Venez à moi. 1539 01:11:43,720 --> 01:11:44,830 1540 01:11:44,830 --> 01:11:48,830 >> Je suis super fier de vous les gars déjà, alors gardez-le. 1541 01:11:48,830 --> 01:11:50,640 Et avoir un bon repos de votre semaine. 1542 01:11:50,640 --> 01:11:53,440 Je suis sûr que je vais voir une certaine de vous à des heures de bureau. 1543 01:11:53,440 --> 01:11:55,414