1 00:00:00,000 --> 00:00:04,875 2 00:00:04,875 --> 00:00:05,750 ANDI PENG: Très bien. 3 00:00:05,750 --> 00:00:08,240 Bienvenue à la quatrième semaine de l'article. 4 00:00:08,240 --> 00:00:10,280 C'est une belle journée ici à New Haven 5 00:00:10,280 --> 00:00:14,370 donc je pense vraiment que le clairsemée dispersion des enfants qui 6 00:00:14,370 --> 00:00:17,530 m'a rejoint pour la section d'aujourd'hui, je vous remercie. 7 00:00:17,530 --> 00:00:21,517 >> Alors vite, juste avant que nous commencer, l'ordre du jour pour aujourd'hui. 8 00:00:21,517 --> 00:00:23,600 Nous allons aller sur une quelques brèves annonces. 9 00:00:23,600 --> 00:00:26,224 Nous avons un calendrier vraiment loufoque à venir dans les deux prochaines semaines 10 00:00:26,224 --> 00:00:28,010 ou alors si nous allons revenir là-dessus. 11 00:00:28,010 --> 00:00:30,410 Deuxièmement, je sais topic-- préférée de tout le monde 12 00:00:30,410 --> 00:00:33,572 Je suis sûr que ce fondu votre esprit lors de conférence, ne vous inquiétez pas, 13 00:00:33,572 --> 00:00:34,780 Je encore un peu de ne pas l'obtenir. 14 00:00:34,780 --> 00:00:35,444 C'est bien. 15 00:00:35,444 --> 00:00:36,110 C'était une blague. 16 00:00:36,110 --> 00:00:37,450 Je fais effectivement obtenir. 17 00:00:37,450 --> 00:00:40,234 Mais je ferai en sorte que vous les gars obtenir, aussi. 18 00:00:40,234 --> 00:00:42,400 Donc, nous allons passer un vraiment, vraiment bonne quantité 19 00:00:42,400 --> 00:00:44,020 de temps à parler pointeur aujourd'hui. 20 00:00:44,020 --> 00:00:47,012 Comme vous pouvez le voir, Candy talk est énorme aujourd'hui. 21 00:00:47,012 --> 00:00:49,220 Nous allons vraiment à garder that-- oui, tout à fait. 22 00:00:49,220 --> 00:00:49,890 Continuez à prendre des bonbons. 23 00:00:49,890 --> 00:00:51,556 Je vais les faire circuler en ce moment. 24 00:00:51,556 --> 00:00:55,150 25 00:00:55,150 --> 00:00:56,510 Pas de soucis. 26 00:00:56,510 --> 00:00:59,570 Nous allons vraiment essayer pour garder le sucre dans le sang de personnes 27 00:00:59,570 --> 00:01:04,390 parce que le cerveau va brûler un peu d'oxygène aujourd'hui parce pointeurs 28 00:01:04,390 --> 00:01:05,652 sont vraiment, vraiment dur. 29 00:01:05,652 --> 00:01:08,360 Ensuite, nous allons parler gestion de la mémoire qui est du genre 30 00:01:08,360 --> 00:01:09,487 dans le même domaine. 31 00:01:09,487 --> 00:01:11,570 Et nous allons passer à la redirection et le fichier 32 00:01:11,570 --> 00:01:15,297 I / O qui sont la syntaxe juste, agréable choses que nous devrions parler. 33 00:01:15,297 --> 00:01:17,130 Et puis enfin, je suis vais essayer une fois de plus 34 00:01:17,130 --> 00:01:19,070 partir comme 10, 15 minutes pour pset4. 35 00:01:19,070 --> 00:01:21,820 Cela est dû dans quelques jours donc nous sommes va vraiment une sorte de vous donner 36 00:01:21,820 --> 00:01:24,850 quelques conseils utiles si vous Vous avez déjà commencé à ce sujet. 37 00:01:24,850 --> 00:01:26,141 Frais. 38 00:01:26,141 --> 00:01:26,640 D'ACCORD. 39 00:01:26,640 --> 00:01:30,710 Ainsi, certaines annonces pour cette semaine à venir. 40 00:01:30,710 --> 00:01:31,805 Classement. 41 00:01:31,805 --> 00:01:33,930 Je ne sais pas vraiment à ce point combien d'entre vous 42 00:01:33,930 --> 00:01:37,180 les gars sont en fait dans mon vous section-- OK il? 43 00:01:37,180 --> 00:01:38,020 D'ACCORD. 44 00:01:38,020 --> 00:01:40,150 Mais, pour ceux d'entre vous qui sont dans ma section, 45 00:01:40,150 --> 00:01:42,180 juste un couple commente classement. 46 00:01:42,180 --> 00:01:44,899 >> Première travail vraiment bon de commenter,. 47 00:01:44,899 --> 00:01:47,940 Ceux d'entre vous qui ne commentons pas, vous savez qui vous êtes parce que vous avez probablement 48 00:01:47,940 --> 00:01:50,610 obtenu quelques points de style sonné cette semaine. 49 00:01:50,610 --> 00:01:53,920 Assurez-vous que dans l'ensemble de votre programmes ajouter quelques commentaires. 50 00:01:53,920 --> 00:01:56,960 Vraiment, le style est vraiment facile à obtenir des points correctes comme un champ. 51 00:01:56,960 --> 00:01:58,710 Donc, pour nous, juste faire assurer que vous êtes genre 52 00:01:58,710 --> 00:02:03,770 d'ajouter une brève description dans tous les vos programmes sur ce que vous faites. 53 00:02:03,770 --> 00:02:09,190 >> Secondly-- cela est un énorme problème pour beaucoup de l'AT cet week-- passé 54 00:02:09,190 --> 00:02:12,020 alors assurez-vous de télécharger à le dossier correct avec correctement 55 00:02:12,020 --> 00:02:13,370 programmes nommés. 56 00:02:13,370 --> 00:02:16,820 Et la raison pour laquelle nous demandons pour cela est parce que nous, dans le cadre du classement, 57 00:02:16,820 --> 00:02:20,820 fait exécuter un script sur votre code qui télécharge automatiquement 58 00:02:20,820 --> 00:02:24,780 tous vos psets, exécute des tests de régularité sur chacun d'eux, 59 00:02:24,780 --> 00:02:27,550 et télécharge ensuite vos scores directement dans le carnet de notes. 60 00:02:27,550 --> 00:02:32,140 Cependant, à tout moment, si vous nom de votre programme de manière incorrecte, 61 00:02:32,140 --> 00:02:34,510 il bousille tout le programme pour tout le monde. 62 00:02:34,510 --> 00:02:37,280 >> Et donc, légitimement, cette belle écriture 63 00:02:37,280 --> 00:02:40,260 que nous avons écrit que le fait tout cela pour nous, complètement 64 00:02:40,260 --> 00:02:43,070 se bloque si vous ne disposez pas votre programme nommé correctement. 65 00:02:43,070 --> 00:02:46,020 Donc, il suffit de télécharger à la bonne dossier, ont eux, nommé correctement, 66 00:02:46,020 --> 00:02:47,372 puis la vie est bonne. 67 00:02:47,372 --> 00:02:49,080 Je reçois vos psets retour à vous les gars antérieures 68 00:02:49,080 --> 00:02:51,110 parce que je reçois au grade rapidement. 69 00:02:51,110 --> 00:02:52,461 Ouais. 70 00:02:52,461 --> 00:02:52,960 D'ACCORD. 71 00:02:52,960 --> 00:02:57,870 Et aussi, nous allons parler about-- Yale a une vraiment, vraiment 72 00:02:57,870 --> 00:02:59,950 calendrier loufoque dans ces deux prochaines semaines. 73 00:02:59,950 --> 00:03:02,460 Donc ceux d'entre vous les gars au Harvard, cela ne vaut pas. 74 00:03:02,460 --> 00:03:05,585 Mais pour nous enfants adorables à Yale nous avons quelque chose appelé automne break-- désolé, 75 00:03:05,585 --> 00:03:08,430 Harvard-- où nous avons cinq jours de congé de l'école. 76 00:03:08,430 --> 00:03:12,270 Et tout cela est beau, il sorte de mess notre rythme pset 77 00:03:12,270 --> 00:03:14,104 parce psets sont dus jeudi vendredi. 78 00:03:14,104 --> 00:03:16,020 Et si nous ne sommes pas ici Jeudi, vendredi, nous 79 00:03:16,020 --> 00:03:18,640 ne peut pas avoir un travail pour vous les gars due le jeudi, vendredi. 80 00:03:18,640 --> 00:03:23,832 >> Donc, ce que nous allons faire est-- nous sommes comme 99% sûr que ce soit ce qui se passe, 81 00:03:23,832 --> 00:03:25,540 il peut y avoir certaines changer, mais je pense qu'il est 82 00:03:25,540 --> 00:03:28,460 subtle-- est que nous allons have-- cette semaine est normal. 83 00:03:28,460 --> 00:03:32,130 Donc, nous avons notre section sur Mardi suivie par les heures de bureau 84 00:03:32,130 --> 00:03:35,190 dans le reste de la semaine puis pset4 est dû le vendredi. 85 00:03:35,190 --> 00:03:38,180 Puis, comme vous les gars savent tout, comme Je vous ai rappelé les gars la semaine dernière, 86 00:03:38,180 --> 00:03:41,700 nous avons notre quiz 0 venir le mercredi. 87 00:03:41,700 --> 00:03:44,400 >> Et donc, être un étudiant moi-même, Je sais que très peu d'entre vous 88 00:03:44,400 --> 00:03:49,110 les gars seront effectivement travaillent sur pset5 les deux jours avant votre quiz. 89 00:03:49,110 --> 00:03:51,110 Donc, ce que nous allons probablement finir par faire est, 90 00:03:51,110 --> 00:03:54,840 que lundi soir, nous allons au fait de 5h30 à 7h00, 91 00:03:54,840 --> 00:03:59,970 avoir un bref examen séance sur les sujets abordés. 92 00:03:59,970 --> 00:04:02,040 Incertain si elle est un session d'examen ou d'un Q & A. 93 00:04:02,040 --> 00:04:04,650 Ce sera une sorte de révision forme sous laquelle nous couvrirons 94 00:04:04,650 --> 00:04:06,640 certains sujets pertinents pour vous les gars. 95 00:04:06,640 --> 00:04:09,886 >> Et puis lundi et mardi nuits de cette semaine 8:00-11h00, 96 00:04:09,886 --> 00:04:11,260 nous allons avoir des heures de bureau. 97 00:04:11,260 --> 00:04:14,500 Ces heures d'ouverture seront les plus probablement plus de tout juste d'arriver, 98 00:04:14,500 --> 00:04:17,564 AT poser vos questions concernant tous les concepts que vous êtes confus au sujet, 99 00:04:17,564 --> 00:04:20,480 et ils vont sorte d'aller avec toi et examiner les concepts pour le quiz. 100 00:04:20,480 --> 00:04:22,920 Quiz 0, si vous êtes dans le Lundi, la section mercredi 101 00:04:22,920 --> 00:04:26,480 sera les mercredis de cours class-- mercredi pendant la classe. 102 00:04:26,480 --> 00:04:29,530 Et puis, si vous êtes dans le Mardi, la section jeudi 103 00:04:29,530 --> 00:04:32,577 sera également en classe jeudi. 104 00:04:32,577 --> 00:04:34,410 Vous ne pouvez pas vraiment choisir celui que vous allez. 105 00:04:34,410 --> 00:04:35,640 Si vous êtes un lundi, mercredi, vous devez aller au mercredi. 106 00:04:35,640 --> 00:04:38,056 Si vous êtes le mardi, jeudi vous devez aller au jeudi. 107 00:04:38,056 --> 00:04:42,277 Mais alors que la nuit, nous le personnel est charmant, sera 108 00:04:42,277 --> 00:04:45,360 avoir un quiz géant classement parti que nous aurons vos scores de nouveau à vous 109 00:04:45,360 --> 00:04:46,190 cette nuit. 110 00:04:46,190 --> 00:04:46,900 À quelle heure? 111 00:04:46,900 --> 00:04:51,190 Manque de clarté, qui sait, mais il sera être de retour dans les 24 heures 112 00:04:51,190 --> 00:04:53,700 de sorte que vous les gars, espérons- avoir une certaine rétroaction d'ici vendredi. 113 00:04:53,700 --> 00:04:55,870 >> Et puis nous avons une semaine vraiment loufoque. 114 00:04:55,870 --> 00:05:00,330 Donc pset5 est l'un des psets plus difficiles de l'année. 115 00:05:00,330 --> 00:05:03,370 Gars tellement désolé. 116 00:05:03,370 --> 00:05:06,520 Qu'est-ce que nous allons essayer de faire est que nous allons avoir 117 00:05:06,520 --> 00:05:08,380 un soutien réel que le week-end. 118 00:05:08,380 --> 00:05:12,970 Parce que, comme vous les gars peut le voir, le pset est dû avant la pause de l'automne. 119 00:05:12,970 --> 00:05:16,760 Nous ne disposons pas pour le soutien vous les gars pendant les vacances d'automne 120 00:05:16,760 --> 00:05:18,897 et donc nous avons vraiment une sorte de vouloir que cette phrase, 121 00:05:18,897 --> 00:05:21,230 nous allons en finir avec ça, nous allons travailler vraiment, vraiment dur 122 00:05:21,230 --> 00:05:25,380 ces deux prochaines semaines, obtiennent ce quiz et d'ajouter ces deux psets fait avec 123 00:05:25,380 --> 00:05:29,650 puis vous les gars ont une belle détente sept jours sans penser à CS. 124 00:05:29,650 --> 00:05:33,750 >> Donc, pour que la arriver, nous sommes probablement 125 00:05:33,750 --> 00:05:36,870 aller à déplacer ma section à dimanche après-midi. 126 00:05:36,870 --> 00:05:39,070 Il sera filmé donc pas soucis si vous ne pouvez pas venir. 127 00:05:39,070 --> 00:05:41,595 Mais le tournage en ligne sera être là et accessible 128 00:05:41,595 --> 00:05:47,630 de sorte que vous les gars ont Dimanche, Lundi, mardi, pour travailler sur pset5. 129 00:05:47,630 --> 00:05:50,205 Et puis, il est l'automne rompre et aucune CS puis 130 00:05:50,205 --> 00:05:51,830 nous revenons et son retour dans la mouture. 131 00:05:51,830 --> 00:05:54,926 >> Mais ça va être un belle semaine pour les vacances d'automne 132 00:05:54,926 --> 00:05:58,050 et nous voulons vraiment faire le stress gratuit pour tout le monde que possible, qui 133 00:05:58,050 --> 00:06:02,620 est pourquoi nous avons déplacé le pset serait due avant la pause d'automne plutôt qu'après. 134 00:06:02,620 --> 00:06:07,601 Parce it's-- Je veux dire, je me sens un peu comme il défait le but d'avoir 135 00:06:07,601 --> 00:06:10,850 la date limite après la pause de l'automne si il ya de toute façon pas de soutien pendant les vacances d'automne. 136 00:06:10,850 --> 00:06:14,670 Donc, il est rather-- je pense nous préférons concentrer là-dessus maintenant. 137 00:06:14,670 --> 00:06:16,950 Quelqu'un at-il des questions à propos de ce calendrier? 138 00:06:16,950 --> 00:06:17,830 Tout confus? 139 00:06:17,830 --> 00:06:18,330 Ouais. 140 00:06:18,330 --> 00:06:20,944 >> AUDIENCE: Avons-nous encore une conférence sur le 21? 141 00:06:20,944 --> 00:06:21,610 ANDI PENG: Ouais. 142 00:06:21,610 --> 00:06:26,421 Donc, le 21, il va être une conférence qui est en direct de Harvard. 143 00:06:26,421 --> 00:06:29,170 Je ne sais pas si David est le tournage ou si il a fait des conférences, 144 00:06:29,170 --> 00:06:32,430 mais ça va être disponible en ligne pour vous les gars à l'accès. 145 00:06:32,430 --> 00:06:35,510 Donc, assurez-vous de tailler une heure quelque part dans la rupture de l'automne 146 00:06:35,510 --> 00:06:39,375 si vous les gars peuvent attraper sur cette conférence. 147 00:06:39,375 --> 00:06:39,875 Ouais? 148 00:06:39,875 --> 00:06:40,300 >> AUDIENCE: Ouais. 149 00:06:40,300 --> 00:06:40,422 Pardon. 150 00:06:40,422 --> 00:06:41,280 Je suis arrivé ici un couple-- 151 00:06:41,280 --> 00:06:41,640 >> ANDI PENG: Pas de soucis. 152 00:06:41,640 --> 00:06:42,556 Tenez, prenez des bonbons. 153 00:06:42,556 --> 00:06:45,350 154 00:06:45,350 --> 00:06:47,800 >> AUDIENCE: Hé, je pris cela. 155 00:06:47,800 --> 00:06:53,869 Donc, pour récapituler, pas demain mais le Mercredi après cela, nous avons un quiz. 156 00:06:53,869 --> 00:06:54,660 ANDI PENG: Exact. 157 00:06:54,660 --> 00:06:59,207 Public: Et ça va être-- ce qui est le format du quiz? 158 00:06:59,207 --> 00:06:59,790 ANDI PENG: Oh. 159 00:06:59,790 --> 00:07:03,870 Donc, nous allons envoyer un e-mail qui couvre tout ce que plus en profondeur. 160 00:07:03,870 --> 00:07:06,590 Mais, essentiellement, il couvre tout juste les sujets de base déjà couverts 161 00:07:06,590 --> 00:07:09,042 dans la première moitié du semestre. 162 00:07:09,042 --> 00:07:12,250 Nous aurons des séances de révision et la question et des réponses donc pas de soucis à ce sujet. 163 00:07:12,250 --> 00:07:14,107 Mais nous irons plus que trop. 164 00:07:14,107 --> 00:07:16,940 Public: Est-ce que ce sera, nous apporter à nos ordinateurs et le code there-- 165 00:07:16,940 --> 00:07:17,140 PENG ANDI: Non 166 00:07:17,140 --> 00:07:20,130 Il va être vous les gars écriture et répondre aux questions à la main. 167 00:07:20,130 --> 00:07:21,160 >> AUDIENCE: Oh. 168 00:07:21,160 --> 00:07:23,160 >> ANDI PENG: Donc, nous allons donner pratiques et des trucs sur 169 00:07:23,160 --> 00:07:26,420 si vous les gars peuvent vouloir aller peut-être arrière et réécrire à la main Mario juste 170 00:07:26,420 --> 00:07:28,100 Pour vous assurer de gars ont une idée de la façon de le faire. 171 00:07:28,100 --> 00:07:29,933 Parce que parfois, quand vous écrivez à la main vous 172 00:07:29,933 --> 00:07:32,656 oublier des points-virgules et des trucs et ce est vraiment mauvais. 173 00:07:32,656 --> 00:07:34,156 AUDIENCE: Sera-ce pas [inaudible]? 174 00:07:34,156 --> 00:07:38,290 Comme, vous obtenez un point-virgule sur your-- 175 00:07:38,290 --> 00:07:40,270 >> ANDI PENG: Oui et non. 176 00:07:40,270 --> 00:07:43,170 Nous parlerons plus en profondeur En ce qui concerne la façon dont la mise en page de quiz est 177 00:07:43,170 --> 00:07:44,550 et comment nous allons grade. 178 00:07:44,550 --> 00:07:47,425 Mais essentiellement, il suffit de savoir que le format général va vous être 179 00:07:47,425 --> 00:07:49,930 gars soit l'interprétation code-- répondre à des questions de base. 180 00:07:49,930 --> 00:07:51,370 Si je vous ai demandé, ce qui est une bibliothèque? 181 00:07:51,370 --> 00:07:53,450 Vous devriez savoir ce qu'est un bibliothèque fait et écrire que vers le bas. 182 00:07:53,450 --> 00:07:56,283 Ou je peux dire, écrire un programme qui Bonjour tout le monde imprime à l'écran. 183 00:07:56,283 --> 00:08:01,140 Les gars, vous écrirait, int main vide printf bonjour virgule monde. 184 00:08:01,140 --> 00:08:01,908 Ouais. 185 00:08:01,908 --> 00:08:04,398 >> Auditoire: Alors, ça ne va pas être nulle part [inaudible] 186 00:08:04,398 --> 00:08:05,900 niveau du problème de difficulté réglé? 187 00:08:05,900 --> 00:08:06,170 >> PENG ANDI: Non 188 00:08:06,170 --> 00:08:06,380 Non. 189 00:08:06,380 --> 00:08:07,046 Nous won't-- ouais. 190 00:08:07,046 --> 00:08:10,030 Ecrire la totalité de la jeu de 15 à 20 minutes, aller. 191 00:08:10,030 --> 00:08:12,120 Non, ce ne sera pas que. 192 00:08:12,120 --> 00:08:12,801 Non. 193 00:08:12,801 --> 00:08:13,342 AUDIENCE: OK. 194 00:08:13,342 --> 00:08:15,326 Voilà donc mercredi. 195 00:08:15,326 --> 00:08:19,017 Au cours de cette semaine, nous avons aussi ont le problème le plus difficile définir? 196 00:08:19,017 --> 00:08:19,600 PENG ANDI: Non 197 00:08:19,600 --> 00:08:22,970 Donc, le problème réglé ce dû le jour avant la pause de l'automne. 198 00:08:22,970 --> 00:08:25,690 Le schedule-- l'e-mail a été effectivement envoyer 199 00:08:25,690 --> 00:08:27,232 Il ya 20 minutes au sujet de tout cela. 200 00:08:27,232 --> 00:08:28,689 Alors vous les gars il suffit de vérifier vos e-mails. 201 00:08:28,689 --> 00:08:29,430 Il sera là. 202 00:08:29,430 --> 00:08:30,060 Ouais. 203 00:08:30,060 --> 00:08:31,701 Pas de soucis. 204 00:08:31,701 --> 00:08:32,200 Frais. 205 00:08:32,200 --> 00:08:34,900 206 00:08:34,900 --> 00:08:38,900 >> Vous avez des questions générales concernant annonces, classement, des quiz, 207 00:08:38,900 --> 00:08:41,659 Avant de nous plonger à droite dans pointeurs qui consommera 208 00:08:41,659 --> 00:08:45,060 la majorité de notre temps de section aujourd'hui? 209 00:08:45,060 --> 00:08:47,030 Frais. 210 00:08:47,030 --> 00:08:47,530 Bien. 211 00:08:47,530 --> 00:08:50,905 Donc, avez-vous les gars regarder tout cela lovely-- Je ne sais pas ce qu'ils appellent. 212 00:08:50,905 --> 00:08:53,490 La chose où le claymation se fait sauter parce qu'il 213 00:08:53,490 --> 00:08:54,820 ne pas utiliser correctement un pointeur. 214 00:08:54,820 --> 00:08:57,629 Eh bien, votre programme va probablement sauter lui-même si vous 215 00:08:57,629 --> 00:08:59,170 ne pas utiliser des pointeurs correctement ainsi. 216 00:08:59,170 --> 00:09:01,250 Donc, nous allons faire assurer que cela ne se produise pas. 217 00:09:01,250 --> 00:09:04,810 >> Aujourd'hui, nous allons faire un peu de fun pointeur. 218 00:09:04,810 --> 00:09:08,970 Je vais aller sur les choses aussi bien que je pense 219 00:09:08,970 --> 00:09:10,790 est possible dans un petit cadre de temps. 220 00:09:10,790 --> 00:09:14,592 Mais il ya tellement de choses à couvrir que je veux vraiment vous les gars, 221 00:09:14,592 --> 00:09:17,300 si vous ne comprenez pas quelque chose, à ne pas me laisser continuer. 222 00:09:17,300 --> 00:09:18,580 Parce que si vous ne le faites pas comprendre quelque chose, 223 00:09:18,580 --> 00:09:21,329 vous allez probablement pas à comprendre ce que je dis après. 224 00:09:21,329 --> 00:09:23,310 Donc, s'il vous plaît arrêter de me poser une question. 225 00:09:23,310 --> 00:09:25,380 Parce qu'il toutes sortes de boules de neige ensemble. 226 00:09:25,380 --> 00:09:27,800 Comme, pointeurs mènent dans La mémoire du plomb dans d'autres choses. 227 00:09:27,800 --> 00:09:31,710 Et si vous ne comprenez pas les pointeurs, arrêter moi et nous allons le découvrir 228 00:09:31,710 --> 00:09:35,070 et la vie sera belle. 229 00:09:35,070 --> 00:09:35,680 >> Frais. 230 00:09:35,680 --> 00:09:39,050 Donc, combien d'entre vous les gars en conférence, quand David mentionné pointeurs, 231 00:09:39,050 --> 00:09:42,050 vos cerveaux sorte de transformer en Jell-O? 232 00:09:42,050 --> 00:09:42,550 Ouais. 233 00:09:42,550 --> 00:09:44,190 Bien. 234 00:09:44,190 --> 00:09:46,900 Nous allons essayer de de-Jell-O vos cerveaux aujourd'hui. 235 00:09:46,900 --> 00:09:50,300 Nous allons vraiment systématiquement passer par ce qu'est exactement un pointeur est, 236 00:09:50,300 --> 00:09:52,530 ce qu'il fait, et comment nous les utilisons. 237 00:09:52,530 --> 00:09:56,620 >> Donc tout pointers-- sorte normalement avec les variables 238 00:09:56,620 --> 00:10:00,920 nous avons utilisé dans le codage, comme variables telles que entiers ou des chaînes 239 00:10:00,920 --> 00:10:04,790 ou flotteurs, ils sont tous essentiellement une valeur qui leur est attribuée 240 00:10:04,790 --> 00:10:06,870 ainsi que d'une adresse pointant vers cette valeur. 241 00:10:06,870 --> 00:10:08,895 Donc, je vais dessiner ce droit maintenant. 242 00:10:08,895 --> 00:10:14,270 243 00:10:14,270 --> 00:10:16,140 Nous avons presque pas de craie, mais qui est OK. 244 00:10:16,140 --> 00:10:25,550 >> Ainsi, par exemple, normalement la façon dont nous avons 245 00:10:25,550 --> 00:10:30,860 été en utilisant des variables est que nous créons la nom de la variable de type int, nous allons 246 00:10:30,860 --> 00:10:31,360 dis le. 247 00:10:31,360 --> 00:10:37,360 Donc, ici, nous avons int x et nous sommes initialisation que int à 50. 248 00:10:37,360 --> 00:10:42,390 Donc, ici, dans ce bloc de mémoire sur notre ordinateurs nous avons stockées un certain nombre de 50. 249 00:10:42,390 --> 00:10:46,170 Alors, où entrent en jeu des pointeurs est que votre ordinateur itself-- comme, ici, 250 00:10:46,170 --> 00:10:48,880 physiquement sur le disque dur dans la RAM de mon computer-- 251 00:10:48,880 --> 00:10:51,147 il ne dispose que d'une quantité limitée de mémoire. 252 00:10:51,147 --> 00:10:53,980 Vous ne pouvez pas juste garder stocker des choses sur le dessus des choses sur le dessus des choses 253 00:10:53,980 --> 00:10:54,990 et les avoir tous. 254 00:10:54,990 --> 00:10:59,570 >> Ainsi, la manière que nous attribuons dynamiquement mémoire pour pouvoir stocker ce que nous voulons 255 00:10:59,570 --> 00:11:03,150 et d'y accéder, est d'avoir des pointeurs. 256 00:11:03,150 --> 00:11:06,210 Alors, imaginez dans votre espace mémoire, à droite. 257 00:11:06,210 --> 00:11:10,420 Si tel est le RAM de votre ordinateur, vous avez ces petits morceaux 258 00:11:10,420 --> 00:11:14,540 ou des blocs ou des octets de mémoire dans qui-- ce sont juste un peu 259 00:11:14,540 --> 00:11:18,120 blocs qui ont été alloués sur le disque dur ou RAM de votre ordinateur, 260 00:11:18,120 --> 00:11:21,950 et dans chacune de ces blocs vous pouvez stocker des choses différentes. 261 00:11:21,950 --> 00:11:26,990 Ainsi, par exemple, une tableau dans cet exemple 262 00:11:26,990 --> 00:11:29,984 ici est un octet qui est constitué de huit bits. 263 00:11:29,984 --> 00:11:32,900 Le nombre varie en fonction du système d'exploitation de votre ordinateur. 264 00:11:32,900 --> 00:11:35,942 Par exemple, combien d'entre vous ont entendu parler de 32-bits et exploitation 64 bits 265 00:11:35,942 --> 00:11:36,441 systèmes? 266 00:11:36,441 --> 00:11:37,070 Exactement. 267 00:11:37,070 --> 00:11:38,860 >> Donc tout ce qui est dit est que la memory-- 268 00:11:38,860 --> 00:11:42,420 que que votre ordinateur la manière gère la mémoire est différent. 269 00:11:42,420 --> 00:11:45,370 Qui est pourquoi il est vraiment important de comprendre 270 00:11:45,370 --> 00:11:49,450 pourquoi les fonctions de la mémoire elle-même plutôt de prêter attention aux chiffres. 271 00:11:49,450 --> 00:11:52,400 Donc, nous ne nous soucions pas vraiment la taille de ce tableau 272 00:11:52,400 --> 00:11:55,710 est, nous avons juste besoin de se soucier comment grande avons-nous besoin d'un int être, 273 00:11:55,710 --> 00:11:58,350 comment grande avons-nous besoin d'une chaîne être, comment grande est un pointeur? 274 00:11:58,350 --> 00:12:00,630 275 00:12:00,630 --> 00:12:01,130 D'ACCORD. 276 00:12:01,130 --> 00:12:03,690 Donc, ça va être beaucoup du lourd, dense informations. 277 00:12:03,690 --> 00:12:07,005 Je vais vous donner un gars quelques moments comiques de secours ici. 278 00:12:07,005 --> 00:12:09,130 Vous devriez tous être en mesure à comprendre cela maintenant. 279 00:12:09,130 --> 00:12:12,550 Parce que nous savons que pointeurs sont des adresses, 280 00:12:12,550 --> 00:12:14,480 et ceux qui sont différentes à partir de variables. 281 00:12:14,480 --> 00:12:14,980 D'ACCORD. 282 00:12:14,980 --> 00:12:15,610 Frais. 283 00:12:15,610 --> 00:12:17,065 CS blagues sont le meilleur, ouais? 284 00:12:17,065 --> 00:12:19,800 285 00:12:19,800 --> 00:12:23,450 >> Donc, la façon dont nous allons sur la création d'un pointeur 286 00:12:23,450 --> 00:12:25,750 est un genre très spécifique de la syntaxe. 287 00:12:25,750 --> 00:12:27,870 Comme avec toute la création type de variable, il est 288 00:12:27,870 --> 00:12:30,240 va être un spécifique la syntaxe que nous utilisons pour créer. 289 00:12:30,240 --> 00:12:34,830 Ainsi, lorsque la déclaration de tout pointeur, un pointeur est juste essentially-- 290 00:12:34,830 --> 00:12:37,040 Je pense que l'importante partie de pointeurs est 291 00:12:37,040 --> 00:12:41,650 alors que la variable a à la fois une valeur et une adresse, 292 00:12:41,650 --> 00:12:44,100 un pointeur est une adresse. 293 00:12:44,100 --> 00:12:45,740 Sa valeur est une adresse. 294 00:12:45,740 --> 00:12:48,120 Donc, il est une adresse stockée à une adresse différente. 295 00:12:48,120 --> 00:12:49,120 Si cela a du sens. 296 00:12:49,120 --> 00:12:52,390 Nous allons passer en revue plus en détail, mais qui est la forme générique 297 00:12:52,390 --> 00:12:54,370 pourquoi-- de la façon dont une imprimante est stocké. 298 00:12:54,370 --> 00:12:58,900 >> Donc, la façon dont vous créez un pointeur est en faisant ce type de données 299 00:12:58,900 --> 00:13:02,840 que le pointeur va être le référencement et alors-- 300 00:13:02,840 --> 00:13:05,324 avec la star-- et ensuite le nom du pointeur. 301 00:13:05,324 --> 00:13:07,240 Donc, ici, si nous voulions pour créer un pointeur qui 302 00:13:07,240 --> 00:13:11,640 pointé vers un entier, et nous voulait le nom du pointeur soit x, 303 00:13:11,640 --> 00:13:13,880 nous ferions int star du x. 304 00:13:13,880 --> 00:13:14,380 Ouais? 305 00:13:14,380 --> 00:13:16,680 >> Public: Et si la ligne suivante vous 306 00:13:16,680 --> 00:13:20,045 faire int x, int sera la star du x indiquer l'emplacement de la x 307 00:13:20,045 --> 00:13:21,170 vous définissez la suite? 308 00:13:21,170 --> 00:13:22,000 >> ANDI PENG: très bonne question. 309 00:13:22,000 --> 00:13:23,860 Nous allons passer en revue dans cette un couple glisse plus tard. 310 00:13:23,860 --> 00:13:24,920 Ouais. 311 00:13:24,920 --> 00:13:27,610 Et puis même chose avec omble chevalier et même flotteurs chose. 312 00:13:27,610 --> 00:13:29,950 Il suffit de savoir que, à ce stade nous avons créé un pointeur, 313 00:13:29,950 --> 00:13:32,470 nous avons pas réellement mis en la sur tout instant. 314 00:13:32,470 --> 00:13:34,110 Nous avons fait pas référencé il. 315 00:13:34,110 --> 00:13:36,087 La même chose ici quand vous créez une variable, 316 00:13:36,087 --> 00:13:39,420 vous avez créé le nom de la variable, vous avez pas réellement définir une valeur. 317 00:13:39,420 --> 00:13:41,410 Même chose ici. 318 00:13:41,410 --> 00:13:42,110 >> D'ACCORD. 319 00:13:42,110 --> 00:13:44,670 Alors, comment pouvons-nous définir les valeurs des pointeurs? 320 00:13:44,670 --> 00:13:47,190 Il est par référencement et le déréférencement. 321 00:13:47,190 --> 00:13:52,260 Donc, la façon dont nous pouvons référencer un varia-- un pointeur, en substance 322 00:13:52,260 --> 00:13:56,630 nous retournons l'adresse en mémoire dont une variable est stockée. 323 00:13:56,630 --> 00:14:02,550 Donc, si je devais un pointer-- je vais dessiner cette fois nous arrivons à la diapositive suivante, 324 00:14:02,550 --> 00:14:05,760 mais il suffit de savoir que, pour l'essentiel, l'et-- l'esperluette 325 00:14:05,760 --> 00:14:10,240 et que tout le variable-- ne fait que vous donner l'adresse 326 00:14:10,240 --> 00:14:11,780 d'où quelque chose est stocké. 327 00:14:11,780 --> 00:14:15,730 Et déréférencement est le contraire de ce qui est juste l'étoile. 328 00:14:15,730 --> 00:14:18,950 L'étoile vous donne juste la réelle données stockées à cette adresse. 329 00:14:18,950 --> 00:14:21,090 >> Donc, on vous donne l'adresse stocké à une adresse, 330 00:14:21,090 --> 00:14:23,945 l'autre vous donne la réelle valeur stockée à l'adresse. 331 00:14:23,945 --> 00:14:25,820 Donc, les deux d'entre eux donnent vous des choses différentes. 332 00:14:25,820 --> 00:14:27,755 333 00:14:27,755 --> 00:14:29,880 Une fois de plus, les lames sont tous en ligne donc pas de soucis 334 00:14:29,880 --> 00:14:33,200 si vous les gars ne peuvent pas copier cette baisse dans le temps. 335 00:14:33,200 --> 00:14:36,330 >> Donc, nous allons jeter un coup d'oeil cet exemple ici. 336 00:14:36,330 --> 00:14:40,530 Donc, nous avons un géant réseau de mémoire ici, non? 337 00:14:40,530 --> 00:14:42,920 Où nous avons juste des blocs de mémoire, ou octets de mémoire, 338 00:14:42,920 --> 00:14:45,060 dans lequel nous pouvons stocker des choses différentes. 339 00:14:45,060 --> 00:14:47,310 Disons simplement que ce sont les points d'adresse en mémoire. 340 00:14:47,310 --> 00:14:51,350 Donc, chaque fois que vous avez - voir le 0x, tout ce que vous dit est que 341 00:14:51,350 --> 00:14:52,930 Voilà une chiffres hexadécimaux. 342 00:14:52,930 --> 00:14:56,310 Comme vous les gars savent tout, des numéros pourrait être basé dans différentes bases. 343 00:14:56,310 --> 00:14:58,770 La base 10 est généralement la façon dont nous interpréter les chiffres. 344 00:14:58,770 --> 00:15:00,550 Il ya aussi la base 2, qui est binaire. 345 00:15:00,550 --> 00:15:03,366 Et dans ce cas, hexadécimale est base 16. 346 00:15:03,366 --> 00:15:06,240 Il est juste une autre façon de dire 10-- de zéro à neuf ou à zéro 347 00:15:06,240 --> 00:15:10,904 et puis aussi A, B, C, D, E, F. Fait également référence à des numéros différents. 348 00:15:10,904 --> 00:15:12,570 David est allé au cours de cette conférence dans brièvement. 349 00:15:12,570 --> 00:15:14,280 Si vous les gars sont confus, il suffit de Google. 350 00:15:14,280 --> 00:15:17,370 Il ya des façons vraiment facile à apprendre ce qui est un chiffre hexadécimal. 351 00:15:17,370 --> 00:15:19,510 Tout ce qui est vraiment pertinent est dès maintenant pour vous 352 00:15:19,510 --> 00:15:24,170 les gars de savoir qu'un chiffres hexadécimaux en C 353 00:15:24,170 --> 00:15:27,090 dit que généralement vous-- vous dit qu'il est un pointeur. 354 00:15:27,090 --> 00:15:29,150 Ou que ce est une adresse. 355 00:15:29,150 --> 00:15:33,310 >> Donc, dans cet exemple ici, int x est égal à 5. 356 00:15:33,310 --> 00:15:36,350 Nous créons un integer-- Désolé, une variable de type 357 00:15:36,350 --> 00:15:39,090 entier et nous il initialisation à 5. 358 00:15:39,090 --> 00:15:47,040 Donc, ici, sur notre carte mémoire, nous pouvons voir que x est à l'adresse de 0x0 359 00:15:47,040 --> 00:15:50,550 et la valeur que vous avez stocké à l'intérieur de celui-ci est de 5. 360 00:15:50,550 --> 00:15:52,370 Cela devrait donner un sens à tout le monde, non? 361 00:15:52,370 --> 00:15:53,030 D'ACCORD. 362 00:15:53,030 --> 00:15:56,520 >> Et puis ce que nous avons fait dans la deuxième ligne de code 363 00:15:56,520 --> 00:16:00,290 est que nous avons créé un pointeur de type int. 364 00:16:00,290 --> 00:16:02,750 Voilà ce que l'int Star Pointer est en train de faire. 365 00:16:02,750 --> 00:16:07,320 Et qui équivaut à ce que l'esperluette x est de vous donner l'adresse de quelque chose. 366 00:16:07,320 --> 00:16:12,120 Donc, l'adresse de x dans cet exemple est 0x0. 367 00:16:12,120 --> 00:16:15,630 Et pour que l'adresse est en cours stockée dans ce pointeur. 368 00:16:15,630 --> 00:16:17,360 Est-ce que de sens pour tout le monde? 369 00:16:17,360 --> 00:16:19,965 >> Alors, pensez à this-- penser pointers-- ici 370 00:16:19,965 --> 00:16:24,780 à Yale nous avons un système de boîte postale où chaque élève a un mailing 371 00:16:24,780 --> 00:16:26,960 adresse où vous pouvez aller dans le sous-sol de LW 372 00:16:26,960 --> 00:16:30,492 et vous pouvez simplement aller et grab tout ce que vous devez partir de cette adresse. 373 00:16:30,492 --> 00:16:32,450 La même chose se passe ici dans un ordinateur. 374 00:16:32,450 --> 00:16:36,770 Vous avez ces octets de mémoire qui vous pouvez stocker des informations dans, 375 00:16:36,770 --> 00:16:39,529 mais dans le but de savoir qui des éléments d'information 376 00:16:39,529 --> 00:16:42,570 Match Up de ce que vous essayez de trouver et où, vous avez besoin d'un pointeur qui 377 00:16:42,570 --> 00:16:43,740 vous indique comment y aller. 378 00:16:43,740 --> 00:16:47,270 >> Ainsi, par exemple, pour moi, ma boîte postale, Je dois un certain nombre à cinq chiffres. 379 00:16:47,270 --> 00:16:48,400 Voilà mon adresse. 380 00:16:48,400 --> 00:16:51,880 Donc, je peux rendre physiquement à la mémoire, Je peux regarder l'adresse, 381 00:16:51,880 --> 00:16:54,507 Je peux aller à cette boîte postale et accéder aux données à l'intérieur. 382 00:16:54,507 --> 00:16:57,090 Est-ce que de sens pour tout le monde Votre ordinateur est essentiellement 383 00:16:57,090 --> 00:16:59,000 faire exactement la même chose. 384 00:16:59,000 --> 00:17:02,750 >> Donc, tout pointeur fait est que il est juste de créer une mémoire 385 00:17:02,750 --> 00:17:06,099 et ses données de la mémoire est en fait l'adresse de quelque chose d'autre. 386 00:17:06,099 --> 00:17:08,210 Ensuite, vous pouvez aller et de trouver que. 387 00:17:08,210 --> 00:17:09,060 Tout le monde la bonne? 388 00:17:09,060 --> 00:17:10,720 Tout le monde bien avec moi jusqu'à présent? 389 00:17:10,720 --> 00:17:11,360 D'ACCORD. 390 00:17:11,360 --> 00:17:11,859 Frais. 391 00:17:11,859 --> 00:17:14,311 392 00:17:14,311 --> 00:17:14,810 Bien. 393 00:17:14,810 --> 00:17:19,160 Donc, presque la même chose qu'avant. 394 00:17:19,160 --> 00:17:23,849 Il faut donc, d'une part, une variable appelée dans laquelle x case-- 395 00:17:23,849 --> 00:17:27,700 Je vais changer cette valeur à 5. 396 00:17:27,700 --> 00:17:31,820 Disons simplement l'adresse de cette mémoire est 0x0. 397 00:17:31,820 --> 00:17:33,070 00. 398 00:17:33,070 --> 00:17:33,570 Génial. 399 00:17:33,570 --> 00:17:35,320 >> Alors, sur notre deuxième ligne de code, nous sommes 400 00:17:35,320 --> 00:17:41,210 va créer un pointeur appelé pointeur ptr. 401 00:17:41,210 --> 00:17:45,760 Et l'adresse de cela, nous allons juste dire que ce 0x01 en mémoire. 402 00:17:45,760 --> 00:17:48,280 Et nous voulons réellement store-- l'esperluette 403 00:17:48,280 --> 00:17:50,620 x vous donne l'adresse de ce que X a été. 404 00:17:50,620 --> 00:17:53,990 Et l'adresse de x était 0x00. 405 00:17:53,990 --> 00:17:57,300 Donc, ce pointeur maintenant a fait l'adresse 406 00:17:57,300 --> 00:18:00,210 stockée comme valeur de ce que X a été. 407 00:18:00,210 --> 00:18:01,700 Tout le monde avec moi jusqu'à présent? 408 00:18:01,700 --> 00:18:02,320 Frais. 409 00:18:02,320 --> 00:18:04,670 >> Ensuite, la manière dont nous aimerions que copier, 410 00:18:04,670 --> 00:18:09,650 est si nous voulons déclarer et initialiser un autre bloc de mémoire de type int. 411 00:18:09,650 --> 00:18:10,150 Droit? 412 00:18:10,150 --> 00:18:11,130 Ce serait un int. 413 00:18:11,130 --> 00:18:14,130 Il serait appelé copie. 414 00:18:14,130 --> 00:18:17,120 Et vous allez donc get-- le pointeur étoiles vous donne 415 00:18:17,120 --> 00:18:19,080 les données réelles provenant de cette adresse. 416 00:18:19,080 --> 00:18:22,490 L'esperluette vous donne l'adresse, l'étoile vous donne les données. 417 00:18:22,490 --> 00:18:24,630 Ainsi, les données de pointeur. 418 00:18:24,630 --> 00:18:29,420 Ce pointeur est orienté à 5. 419 00:18:29,420 --> 00:18:33,140 Et si cette fonction ici-- l'étoile pointer-- 420 00:18:33,140 --> 00:18:39,740 va, obtient tout ce qui est en ce bloc et magasins ici. 421 00:18:39,740 --> 00:18:41,730 Tout le monde clair sur comment cela est arrivé? 422 00:18:41,730 --> 00:18:45,490 >> There-- Ainsi, les deux opérateurs droit l'esperluette et le star-- 423 00:18:45,490 --> 00:18:48,250 il suffit de faire des choses différentes lorsqu'il est utilisé sur des pointeurs. 424 00:18:48,250 --> 00:18:50,837 Celui que vous obtient l'adresse, l'un vous obtient la valeur réelle. 425 00:18:50,837 --> 00:18:53,670 Donc, assurez-vous que lorsque vous les gars sont codage que vous ne confondez pas les deux 426 00:18:53,670 --> 00:18:55,650 parce qu'ils sont très différents. 427 00:18:55,650 --> 00:18:58,880 Ici, nous avons un bel exemple d'un 0x01. 428 00:18:58,880 --> 00:19:01,207 Voilà une très belle petit numéro à retenir. 429 00:19:01,207 --> 00:19:03,040 Dans votre ordinateur réel vous allez avoir 430 00:19:03,040 --> 00:19:06,740 un certain nombre géant de l'âne qui est quelque chose ce ne est pas belle, pas très agréable. 431 00:19:06,740 --> 00:19:08,280 Il va y avoir une certaine valeur d'ordures. 432 00:19:08,280 --> 00:19:10,920 Et donc ça va vraiment, vraiment gâcher vos programmes. 433 00:19:10,920 --> 00:19:12,670 C'est très important maintenant que nous avons 434 00:19:12,670 --> 00:19:16,150 les fondamentaux bas pour pourquoi-- comme, ce qui se passe physiquement quand 435 00:19:16,150 --> 00:19:18,270 vous utilisez ces blocs de code. 436 00:19:18,270 --> 00:19:19,120 Everyone-- ouais? 437 00:19:19,120 --> 00:19:21,425 >> Auditoire: Alors int x est égal int copie? 438 00:19:21,425 --> 00:19:24,650 439 00:19:24,650 --> 00:19:34,970 >> PENG ANDI: Non, parce que, dans ce cas, int x-- la valeur de x-- est égal à 5, à droite? 440 00:19:34,970 --> 00:19:40,546 Et puis int copie est égal à 5. 441 00:19:40,546 --> 00:19:43,420 Donc, si vous étiez à les assimiler à l'autre parce qu'ils sont des nombres entiers, 442 00:19:43,420 --> 00:19:46,379 oui, ils évalueraient à true. 443 00:19:46,379 --> 00:19:49,670 Mais si elles étaient des chaînes dans la mémoire, comme celui que David a fait durant exemple, 444 00:19:49,670 --> 00:19:51,670 qui est différent parce que ils référencement 445 00:19:51,670 --> 00:19:54,920 les adresses des lieux de la mémoire et ils équivaudraient à false. 446 00:19:54,920 --> 00:20:00,070 >> Donc, ici, il serait vrai parce que vous êtes comparant directement values-- integers-- 447 00:20:00,070 --> 00:20:02,240 mais dans les autres vous êtes points de référence. 448 00:20:02,240 --> 00:20:05,290 Parce qu'une chaîne est dans un tableau, et tous-- nous allons parler de ce later-- 449 00:20:05,290 --> 00:20:09,940 mais tableau est essentiellement juste un pointeur vers un tas de caractères dans la mémoire. 450 00:20:09,940 --> 00:20:11,610 Donc, ce sont un peu différent. 451 00:20:11,610 --> 00:20:14,642 Mais dans ce cas, oui, vous pourriez le faire. 452 00:20:14,642 --> 00:20:17,354 >> AUDIENCE: Pouvez-vous expliquer l'adresse de la copie? 453 00:20:17,354 --> 00:20:18,020 ANDI PENG: Ouais. 454 00:20:18,020 --> 00:20:20,030 Voilà donc je just-- ne pas remplir une valeur 455 00:20:20,030 --> 00:20:23,022 mais il est juste un peu aléatoire autre valeur des ordures que nous ne nous soucions pas. 456 00:20:23,022 --> 00:20:25,730 Parce qu'une fois que vous démarrez le programme vous vous rendez compte que nous ne le faisons pas fait 457 00:20:25,730 --> 00:20:28,150 vraiment attention à ce que la adresses réelles sont, 458 00:20:28,150 --> 00:20:30,470 nous avons juste besoin de savoir ce qui est à l'adresse. 459 00:20:30,470 --> 00:20:31,608 Ouais. 460 00:20:31,608 --> 00:20:36,034 >> PUBLIC: L'étoile à côté de l'INT deuxième ligne, qui est différente than-- 461 00:20:36,034 --> 00:20:36,700 ANDI PENG: Ouais. 462 00:20:36,700 --> 00:20:39,015 AUDIENCE: --la déréférencement et référencement étoiles? 463 00:20:39,015 --> 00:20:39,681 ANDI PENG: Ouais. 464 00:20:39,681 --> 00:20:43,180 Ainsi, les auteurs de celui qui C-- décidé d'écrire la langue de C-- 465 00:20:43,180 --> 00:20:44,200 était pas très intelligent. 466 00:20:44,200 --> 00:20:46,830 Ils ne sont pas très intelligent en essayant de comprendre pourquoi nous devrions le faire. 467 00:20:46,830 --> 00:20:49,413 Si elle était moi, je serais certainement utiliser deux caractères différents. 468 00:20:49,413 --> 00:20:52,100 Mais ils ont décidé d'utiliser le même. 469 00:20:52,100 --> 00:20:56,607 >> Donc l'étoile après un int, qui indique à l'ordinateur 470 00:20:56,607 --> 00:20:58,190 que vous êtes sur le point de créer un pointeur. 471 00:20:58,190 --> 00:21:00,820 Mais si vous essayez de déréférencer quelque chose-- en d'autres termes, 472 00:21:00,820 --> 00:21:03,780 aller à l'adresse et tirez les données de somewhere-- 473 00:21:03,780 --> 00:21:05,070 l'étoile est utilisé différemment. 474 00:21:05,070 --> 00:21:08,750 Alors vous les gars juste faire attention à propos pas gâcher les deux utilisations. 475 00:21:08,750 --> 00:21:09,870 Frais. 476 00:21:09,870 --> 00:21:10,605 Ouais? 477 00:21:10,605 --> 00:21:14,680 >> AUDIENCE: Donc, juste pour répéter assurez-vous que je suis following-- 478 00:21:14,680 --> 00:21:16,252 >> ANDI PENG: Totalement amende. 479 00:21:16,252 --> 00:21:20,491 >> AUDIENCE: --in le côté gauche de cette diapositive, nous faisons une chose que nous savons. 480 00:21:20,491 --> 00:21:23,124 Nous déclarons un nombre entier [Inaudible] qui est égal à 5. 481 00:21:23,124 --> 00:21:23,790 ANDI PENG: Ouais. 482 00:21:23,790 --> 00:21:24,456 AUDIENCE: Droit. 483 00:21:24,456 --> 00:21:28,960 Et puis nous avons une chose int étoiles et qui dit que, OK, un peu comme nous 484 00:21:28,960 --> 00:21:31,235 déclaré un entier, maintenant nous déclarer un pointeur. 485 00:21:31,235 --> 00:21:32,110 ANDI PENG: correctement. 486 00:21:32,110 --> 00:21:32,410 Corriger. 487 00:21:32,410 --> 00:21:32,710 >> AUDIENCE: Droit? 488 00:21:32,710 --> 00:21:33,870 Et notre pointeur est ptr. 489 00:21:33,870 --> 00:21:34,080 >> ANDI PENG: Yep. 490 00:21:34,080 --> 00:21:35,460 Le nom du pointeur est ptr. 491 00:21:35,460 --> 00:21:35,959 Pointer. 492 00:21:35,959 --> 00:21:39,000 Public: Et puis, il est égal à nx qui raconte juste C 493 00:21:39,000 --> 00:21:44,667 qu'il souhaite accéder à la valeur entier x-- la valeur entier x 494 00:21:44,667 --> 00:21:45,800 a été attribué. 495 00:21:45,800 --> 00:21:49,050 >> ANDI PENG: Soyez prudent parce esperluette x effectivement 496 00:21:49,050 --> 00:21:53,120 raconte vous-- l'ordinateur que vous vouloir tirer l'adresse de ce que x est. 497 00:21:53,120 --> 00:21:56,350 Donc vous donne l'esperluette adresse, étoiles vous donne la valeur. 498 00:21:56,350 --> 00:21:58,255 >> Auditoire: Alors, nous voulons l'adresse. 499 00:21:58,255 --> 00:22:02,075 Disons que x était at-- 500 00:22:02,075 --> 00:22:03,950 ANDI PENG: Nous avons en fait savoir ce que x est, non? 501 00:22:03,950 --> 00:22:06,790 Parce que nous savons que x était-- je suis invente, mais disons simplement que, 502 00:22:06,790 --> 00:22:08,760 arbitrairement, il était 0x00. 503 00:22:08,760 --> 00:22:09,590 Droit? 504 00:22:09,590 --> 00:22:14,120 Donc, nous savons que l'adresse est 0x00, et donc quand nous allons et esperluette x, 505 00:22:14,120 --> 00:22:17,050 nous savons que ce devrait évaluer à 0x00. 506 00:22:17,050 --> 00:22:20,810 Ce qui explique pourquoi nous avons stocké que que la valeur de notre pointeur. 507 00:22:20,810 --> 00:22:21,924 Cela a-t-il du sens? 508 00:22:21,924 --> 00:22:22,832 >> Public: Oui. 509 00:22:22,832 --> 00:22:28,057 Et la copie va de déréférencer ptr-- 510 00:22:28,057 --> 00:22:28,765 ANDI PENG: Droit. 511 00:22:28,765 --> 00:22:30,473 AUDIENCE: --which est un pointeur que nous avons 512 00:22:30,473 --> 00:22:35,220 déclaré que nous la raconte Adresse de l'entier x. 513 00:22:35,220 --> 00:22:36,160 >> ANDI PENG: Ouais. 514 00:22:36,160 --> 00:22:39,272 >> Public: Et dans ce un cas, ptr étoiles est 515 00:22:39,272 --> 00:22:41,256 égale à la valeur de x qui est égal à 5. 516 00:22:41,256 --> 00:22:42,744 >> ANDI PENG: Exact. 517 00:22:42,744 --> 00:22:44,728 >> AUDIENCE: Cool. 518 00:22:44,728 --> 00:22:49,382 Et cela est une façon simple d'obtenir cela ou est-ce la seule way-- 519 00:22:49,382 --> 00:22:51,840 ANDI PENG: Donc maintenant il ne semble pas très logique pour nous 520 00:22:51,840 --> 00:22:54,690 de passer tout ce temps à faire cette chose de super compliqué quand 521 00:22:54,690 --> 00:22:57,606 tout ce que nous avons fait est simplement créer deux entiers avec la valeur de 5, non? 522 00:22:57,606 --> 00:22:58,900 Il n'a pas de sens. 523 00:22:58,900 --> 00:23:03,060 Mais une fois que nous allons passer en revue allocation de mémoire et-- nous allons 524 00:23:03,060 --> 00:23:06,067 aller sur pourquoi cela peut être pratique et utile plus tard. 525 00:23:06,067 --> 00:23:09,150 Croyez-moi quand je dis que nous ne faisons pas que créer ces fonctions arbitraires pour vous 526 00:23:09,150 --> 00:23:11,340 les gars à apprendre parce que nous sommes en essayant de jouer avec vous. 527 00:23:11,340 --> 00:23:14,550 Il ya en fait utilise pour tous ces choses et nous allons en parler. 528 00:23:14,550 --> 00:23:14,950 >> AUDIENCE: Awesome. 529 00:23:14,950 --> 00:23:15,350 >> ANDI PENG: Ouais. 530 00:23:15,350 --> 00:23:16,150 >> AUDIENCE: [inaudible]. 531 00:23:16,150 --> 00:23:16,450 >> ANDI PENG: Bonne question. 532 00:23:16,450 --> 00:23:17,510 >> AUDIENCE: [inaudible]. 533 00:23:17,510 --> 00:23:18,000 >> PENG ANDI: Il est pas. 534 00:23:18,000 --> 00:23:18,666 Il est pas vraiment. 535 00:23:18,666 --> 00:23:21,050 AUDIENCE: les variables --Deux qui a également égale [inaudible]. 536 00:23:21,050 --> 00:23:22,400 D'ACCORD. 537 00:23:22,400 --> 00:23:23,070 >> ANDI PENG: Ouais. 538 00:23:23,070 --> 00:23:23,570 D'ACCORD. 539 00:23:23,570 --> 00:23:25,249 Avant de passer, tout le monde est clair? 540 00:23:25,249 --> 00:23:26,790 Je sais Taylor, vous avez un peu en retard. 541 00:23:26,790 --> 00:23:27,490 C'est bon. 542 00:23:27,490 --> 00:23:28,100 Il est en ligne. 543 00:23:28,100 --> 00:23:30,600 Vous regardez le premier 20 minutes et vous serez tout bon. 544 00:23:30,600 --> 00:23:31,190 D'ACCORD. 545 00:23:31,190 --> 00:23:31,690 Frais. 546 00:23:31,690 --> 00:23:35,597 547 00:23:35,597 --> 00:23:37,140 >> Bien. 548 00:23:37,140 --> 00:23:41,270 Donc, cela est essentiellement une sorte de même chose que nous venons de faire. 549 00:23:41,270 --> 00:23:43,100 Il est juste dans une forme graphique. 550 00:23:43,100 --> 00:23:47,070 Si vous deviez suivre ce vient de se passer, int x est égal à 5, 551 00:23:47,070 --> 00:23:52,159 tout ce que nous avons fait à ce point est créer une variable nommée x de type int. 552 00:23:52,159 --> 00:23:54,200 Nous allons stocker le valeur de 5 à l'intérieur de celui-ci. 553 00:23:54,200 --> 00:23:57,366 Il n'y a pas de pointeur parce que nous avons pas effectivement créé un pointeur encore, non? 554 00:23:57,366 --> 00:24:00,302 Et puis dans le prochain ligne, pointeur int étoiles, 555 00:24:00,302 --> 00:24:02,760 Voilà où nous en sommes en fait créer physiquement le pointeur 556 00:24:02,760 --> 00:24:05,010 et nous mettons en place ce que égal ou référencement 557 00:24:05,010 --> 00:24:07,250 le pointeur, à esperluette x. 558 00:24:07,250 --> 00:24:10,002 Qui est où partout dans mémoire ce qui est arrivé à être. 559 00:24:10,002 --> 00:24:12,210 Je ne l'ai pas fait la peine constituant une valeur cette fois. 560 00:24:12,210 --> 00:24:14,900 Mais dans ce cas, ce point vous seriez égale à celle. 561 00:24:14,900 --> 00:24:18,060 >> Et puis, là-bas, la star pointeur est le déréférencement. 562 00:24:18,060 --> 00:24:20,310 Voilà où nous en sommes tirer des informations. 563 00:24:20,310 --> 00:24:24,170 Alors que la valeur en x est en fait va être égal à 35. 564 00:24:24,170 --> 00:24:30,390 Donc, à ce stade, nous avons essentiellement simplement réinitialisé x 35 565 00:24:30,390 --> 00:24:32,320 sans toucher x. 566 00:24:32,320 --> 00:24:34,560 Juste à travers le pointeur qui pointait à x, 567 00:24:34,560 --> 00:24:36,910 nous pouvons réellement changer ce que x était. 568 00:24:36,910 --> 00:24:38,420 Je vais tirer cette ainsi. 569 00:24:38,420 --> 00:24:52,200 >> Donc, ici, nous avons créé une certaine adresse aléatoire ici. 570 00:24:52,200 --> 00:24:54,734 Disons simplement 0x00 nouveau. 571 00:24:54,734 --> 00:24:56,150 Disons simplement que l'adresse est. 572 00:24:56,150 --> 00:25:00,830 Et nous avons créé un entier nommé x et la valeur que je suis affecté à il est 5. 573 00:25:00,830 --> 00:25:03,840 Dans la deuxième ligne, int pointer-- alors maintenant nous avons 574 00:25:03,840 --> 00:25:07,820 obtenu ce deuxième chose ici appelé pointer-- 575 00:25:07,820 --> 00:25:14,310 et nous allons to-- disons simplement il est une autre adresse de mémoire vive. 576 00:25:14,310 --> 00:25:18,460 >> Donc, nous allons définir ce égale à quels qu'ils soient. 577 00:25:18,460 --> 00:25:21,540 578 00:25:21,540 --> 00:25:25,880 Et ce pointeur va pointer vers la valeur de x 579 00:25:25,880 --> 00:25:30,090 Et puis, si nous changeons the-- si nous faisons pointeur étoiles, 580 00:25:30,090 --> 00:25:32,800 cela va de la valeur de notre pointeur. 581 00:25:32,800 --> 00:25:36,979 Dans ce cas, il va suivre Cette flèche vers cette valeur de x 582 00:25:36,979 --> 00:25:38,395 et il va changer à 35. 583 00:25:38,395 --> 00:25:41,400 584 00:25:41,400 --> 00:25:44,760 Effectivement, nous avons juste changé x sans toucher x. 585 00:25:44,760 --> 00:25:48,970 Grâce pointeurs juste référencement, nous pouvons aller et changer la valeur de x. 586 00:25:48,970 --> 00:25:50,050 Cela a-t-il du sens? 587 00:25:50,050 --> 00:25:55,200 >> Donc, de cette manière, nous pouvons renommer et a filtres et remaniera en valeurs 588 00:25:55,200 --> 00:25:57,750 à des choses que nous ne effectivement nous faire. 589 00:25:57,750 --> 00:26:00,925 Est-ce que de sens pour tout le monde? 590 00:26:00,925 --> 00:26:01,425 Frais. 591 00:26:01,425 --> 00:26:04,450 592 00:26:04,450 --> 00:26:05,310 D'ACCORD. 593 00:26:05,310 --> 00:26:08,210 Graphique si complexe ici. 594 00:26:08,210 --> 00:26:09,360 Aller ligne par ligne. 595 00:26:09,360 --> 00:26:12,055 Essentiellement, il suffit de faire l'exacte même chose que je viens de faire. 596 00:26:12,055 --> 00:26:15,977 597 00:26:15,977 --> 00:26:17,810 Avant de passer, je vraiment envie de faire juste 598 00:26:17,810 --> 00:26:19,370 que tout le monde est vraiment clair sur ce point. 599 00:26:19,370 --> 00:26:26,260 Donc ici, le code que nous avons est int a est égal à 3, b est égal à 4, c est égal à 5. 600 00:26:26,260 --> 00:26:33,130 Nous avons donc créé trois entiers nommés a, b et c qui sont égal à 3, 4 et 5. 601 00:26:33,130 --> 00:26:38,460 Et puis nous créons trois pointeurs ce point pour chacune de ces variables. 602 00:26:38,460 --> 00:26:41,760 >> Et maintenant, nous allons pour aller sur l'essentiel 603 00:26:41,760 --> 00:26:44,240 ce qui se passe lorsque vous utilisez sur eux. 604 00:26:44,240 --> 00:26:45,490 Donc les en tirer. 605 00:26:45,490 --> 00:26:48,156 Prenez une feuille de paper-- Je ne sais pas savoir si vous les gars ont tout le papier, 606 00:26:48,156 --> 00:26:50,930 mais ceux d'entre vous qui ne le font pas, peut-être emprunter auprès de ceux d'entre vous qui le font. 607 00:26:50,930 --> 00:26:53,580 Prenez des feuilles de papier et aller ligne par ligne. 608 00:26:53,580 --> 00:26:59,390 Et à chaque opération que vous faites, Je veux que vous les gars pour réellement écrire 609 00:26:59,390 --> 00:27:00,800 ce qui est un, b et c à ce point. 610 00:27:00,800 --> 00:27:03,550 Et quelles sont les adresses, ce sont les pointeurs qui pointent vers des a, b et c 611 00:27:03,550 --> 00:27:04,410 à ce point? 612 00:27:04,410 --> 00:27:07,150 >> Et puis, nous espérons que cette seront genre de gars que vous l'étape 613 00:27:07,150 --> 00:27:08,900 à travers la façon de penser des pointeurs. 614 00:27:08,900 --> 00:27:10,650 On ne va pas aller à travers chacun d'eux. 615 00:27:10,650 --> 00:27:13,450 Peut-être que je vais vous donner five-- comme, trois minutes. 616 00:27:13,450 --> 00:27:14,660 Commencez sur la première quelques-uns. 617 00:27:14,660 --> 00:28:10,410 618 00:28:10,410 --> 00:28:10,959 Oh. 619 00:28:10,959 --> 00:28:11,459 Oops. 620 00:28:11,459 --> 00:28:20,940 621 00:28:20,940 --> 00:28:26,950 >> AUDIENCE: Dans la deuxième ligne, pourquoi est pas l'étoile variable [inaudible]? 622 00:28:26,950 --> 00:28:29,410 >> ANDI PENG: Rappelez-vous dans opérateurs, dans la première semaine, 623 00:28:29,410 --> 00:28:31,730 nous avons parlé de la façon dont si vous le faites, plus égaux, 624 00:28:31,730 --> 00:28:35,320 cela signifie juste un égal un plus c. 625 00:28:35,320 --> 00:28:39,370 Dans ce case-- si ceci est un autre façon dont l'étoile peut être utilisé. 626 00:28:39,370 --> 00:28:42,040 En plus des références et déclarant pointeurs, 627 00:28:42,040 --> 00:28:44,440 rappeler qu'il a également des moyens de multiplication. 628 00:28:44,440 --> 00:28:46,575 Donc dans ce cas, ce serait tout simplement avoir une égale a multiplié c. 629 00:28:46,575 --> 00:28:48,450 Qui est tout aussi différente façon d'écrire cela. 630 00:28:48,450 --> 00:28:49,776 >> AUDIENCE: un équivaut à une fois c. 631 00:28:49,776 --> 00:28:50,442 ANDI PENG: Ouais. 632 00:28:50,442 --> 00:30:43,488 633 00:30:43,488 --> 00:30:47,130 >> Public: Qu'est-ce que cela signifie si il dit une lettre d'esperluette? 634 00:30:47,130 --> 00:30:50,900 >> ANDI PENG: des moyens de Ampersand vous allez that-- vous êtes 635 00:30:50,900 --> 00:30:54,760 aller à l'endroit le pointeur est pointant et en tirant l'adresse. 636 00:30:54,760 --> 00:31:01,270 Donc esperluette vous donne l'adresse, étoiles vous donne la valeur réelle il. 637 00:31:01,270 --> 00:31:03,090 >> AUDIENCE: Sommes-nous appuyant sur ligne par ligne? 638 00:31:03,090 --> 00:31:04,881 >> ANDI PENG: Vous êtes la construction de la ligne par ligne. 639 00:31:04,881 --> 00:31:07,260 Il suffit donc de faire une ligne à un moment et vous alors-- 640 00:31:07,260 --> 00:31:08,470 ne pas avoir à vous soucier de la finition de la chose entière. 641 00:31:08,470 --> 00:31:10,428 Essayons de passer à travers peut-être deux, trois lignes 642 00:31:10,428 --> 00:31:12,445 et puis nous allons convoquer et finir. 643 00:31:12,445 --> 00:31:15,530 644 00:31:15,530 --> 00:31:17,470 >> Il est totalement OK si vous les gars sont perdus. 645 00:31:17,470 --> 00:31:19,334 Ce concept est vraiment difficile. 646 00:31:19,334 --> 00:31:22,500 Si vous les gars sont inquiets que la classe va comme ceci comme David l'a dit, 647 00:31:22,500 --> 00:31:23,190 il ne le fait pas. 648 00:31:23,190 --> 00:31:25,949 Nous atteignons le pic de difficulté conceptuelle 649 00:31:25,949 --> 00:31:27,740 puis il va être incliné vers le bas. 650 00:31:27,740 --> 00:31:29,110 Alors vous les gars y êtes presque. 651 00:31:29,110 --> 00:31:31,080 Nous avons beaucoup de bonbons pour obtenir vous les gars à travers la bosse. 652 00:31:31,080 --> 00:31:32,940 Je pense à peu près après la chute pause, nous serons sur la butte 653 00:31:32,940 --> 00:31:34,220 et la vie sera bien à nouveau. 654 00:31:34,220 --> 00:31:36,580 Donc pas de soucis à tous. 655 00:31:36,580 --> 00:32:30,732 656 00:32:30,732 --> 00:32:31,232 Bien. 657 00:32:31,232 --> 00:32:33,650 Je vais vous donner les gars 20 plusieurs secondes pour conclure. 658 00:32:33,650 --> 00:33:12,560 659 00:33:12,560 --> 00:33:13,330 D'ACCORD. 660 00:33:13,330 --> 00:33:13,830 Bien. 661 00:33:13,830 --> 00:33:16,370 Jetons un coup de couteau à la présente. 662 00:33:16,370 --> 00:33:19,430 Comme vous les gars me donner des réponses, Je vais juste de les taper. 663 00:33:19,430 --> 00:33:22,140 Et nous espérons nous-- puis-je? 664 00:33:22,140 --> 00:33:23,317 Je ne peux pas réellement saisir. 665 00:33:23,317 --> 00:33:24,400 Je vais le dessiner sur la planche. 666 00:33:24,400 --> 00:33:31,420 667 00:33:31,420 --> 00:33:35,900 >> Donc, ici, dans cette première ligne nous avons un égal b c étoiles. 668 00:33:35,900 --> 00:33:38,060 Aussi Elliot a soulevé un vraiment, vraiment bon point. 669 00:33:38,060 --> 00:33:42,500 Parce que je oublié que, en plus de les deux façons dont nous pouvons utiliser l'emblème de l'étoile, 670 00:33:42,500 --> 00:33:43,750 il ya en fait une troisième voie. 671 00:33:43,750 --> 00:33:44,990 Multiplication. 672 00:33:44,990 --> 00:33:51,380 Et si juste ne pas confondre parce qui est la première façon d'utiliser une étoile. 673 00:33:51,380 --> 00:33:54,470 Il est juste dire l'ordinateur que je suis sur le point de créer un pointeur. 674 00:33:54,470 --> 00:34:00,600 >> La seconde manière en faisant étoile de votre pointeur, 675 00:34:00,600 --> 00:34:04,320 qui raconte le pointeur que vous voulez pour accéder aux données à ce pointeur. 676 00:34:04,320 --> 00:34:06,710 Et puis, bien sûr, il ya juste une simple multiplication 677 00:34:06,710 --> 00:34:09,564 entre deux nombres qui vous dit que je veux multiplier les deux. 678 00:34:09,564 --> 00:34:11,730 Donc, il ya beaucoup de façons nous pouvons utiliser le symbole étoile. 679 00:34:11,730 --> 00:34:13,830 Ne vous trompez pas. 680 00:34:13,830 --> 00:34:16,991 Assurez-vous que vous les gars comprenez exactement ce que tous les trois d'entre eux 681 00:34:16,991 --> 00:34:18,630 font. 682 00:34:18,630 --> 00:34:22,920 >> Ainsi, dans cette première ligne, A est égal à B fois c. 683 00:34:22,920 --> 00:34:26,850 Donc, nous allons passer par ce est un, ce qui est b, c est ce? 684 00:34:26,850 --> 00:34:32,600 Et quel est le pointeur d'un, le pointeur à b, et le pointeur à c? 685 00:34:32,600 --> 00:34:34,050 Quels sont ceux qui tous les égaler? 686 00:34:34,050 --> 00:34:34,600 D'ACCORD. 687 00:34:34,600 --> 00:34:38,650 >> Donc, nous partons avec un égal à 3, b est égal à 4, et c est égal à 5, à droite? 688 00:34:38,650 --> 00:34:42,230 Donc, après cette première ligne, peut quelqu'un me dire ce qu'est un est? 689 00:34:42,230 --> 00:34:42,730 Ouais. 690 00:34:42,730 --> 00:34:44,229 Sentez-vous libre de simplement crier réponses. 691 00:34:44,229 --> 00:34:44,929 20. 692 00:34:44,929 --> 00:34:45,550 Bien. 693 00:34:45,550 --> 00:34:46,410 Quel est b? 694 00:34:46,410 --> 00:34:47,777 >> Public: 4. 695 00:34:47,777 --> 00:34:48,610 ANDI PENG: Quelle est c? 696 00:34:48,610 --> 00:34:49,659 AUDIENCE: 5. 697 00:34:49,659 --> 00:34:50,770 ANDI PENG: Yay. 698 00:34:50,770 --> 00:34:51,639 Bien. 699 00:34:51,639 --> 00:34:55,707 Quels sont PA, PB et PC? 700 00:34:55,707 --> 00:34:58,564 >> Audience: 000001 et 002? 701 00:34:58,564 --> 00:34:59,230 ANDI PENG: Ouais. 702 00:34:59,230 --> 00:35:02,390 Donc une sorte de question piège mais pas vraiment, car ici, je 703 00:35:02,390 --> 00:35:04,760 tira souvenirs réels. 704 00:35:04,760 --> 00:35:08,520 Mais parce que, par exemple, nous ne faisons pas savent réellement ce que ces chiffres sont, 705 00:35:08,520 --> 00:35:10,326 nous pouvons simplement dire esperluette. 706 00:35:10,326 --> 00:35:12,200 Je ne sais même pas si je peut tirer une esperluette. 707 00:35:12,200 --> 00:35:18,022 Il est like-- comment faites-vous cela? 708 00:35:18,022 --> 00:35:19,790 >> AUDIENCE: Comme dessiner un huit. 709 00:35:19,790 --> 00:35:20,870 >> ANDI PENG: Comme un huit. 710 00:35:20,870 --> 00:35:21,580 Comme ça. 711 00:35:21,580 --> 00:35:22,080 D'ACCORD. 712 00:35:22,080 --> 00:35:23,446 AUDIENCE: Bingo. 713 00:35:23,446 --> 00:35:25,350 >> ANDI PENG: tuer. 714 00:35:25,350 --> 00:35:28,202 Donc une esperluette, vous pouvez simplement le faire. 715 00:35:28,202 --> 00:35:30,410 Parce que nous ne le faisons pas fait attention à ce que la valeur de cette 716 00:35:30,410 --> 00:35:32,880 est, et il est un peu longue valeur de cul de toute façon, 717 00:35:32,880 --> 00:35:35,220 nous utilisons simplement giong à-dire une esperluette. 718 00:35:35,220 --> 00:35:37,024 Alors quel est pb? 719 00:35:37,024 --> 00:35:37,940 AUDIENCE: [inaudible]. 720 00:35:37,940 --> 00:35:38,606 ANDI PENG: Ouais. 721 00:35:38,606 --> 00:35:42,490 722 00:35:42,490 --> 00:35:43,500 Frais. 723 00:35:43,500 --> 00:35:44,010 Bien. 724 00:35:44,010 --> 00:35:44,770 Facile première ligne. 725 00:35:44,770 --> 00:35:45,270 Nous avons obtenu cela. 726 00:35:45,270 --> 00:35:46,330 Pointeurs sont faciles. 727 00:35:46,330 --> 00:35:47,450 C'est bon. 728 00:35:47,450 --> 00:35:48,740 >> Deuxième ligne. 729 00:35:48,740 --> 00:35:52,400 Et donc égale étoiles est le même chose que de dire une fois c est égal à un. 730 00:35:52,400 --> 00:35:54,730 Il est juste un moyen plus facile de l'écriture. 731 00:35:54,730 --> 00:35:57,170 Donc, nous ne cherchons pas à faire un point ou rien ici. 732 00:35:57,170 --> 00:36:00,600 Donc fait avec la première ligne. 733 00:36:00,600 --> 00:36:05,144 Qu'est-ce qu'un sur la deuxième ligne après avoir fait une égale a multiplié par c? 734 00:36:05,144 --> 00:36:05,777 >> Audience: 100? 735 00:36:05,777 --> 00:36:06,610 PENG ANDI: Il est 100. 736 00:36:06,610 --> 00:36:07,795 Bien. 737 00:36:07,795 --> 00:36:08,864 Que diriez-vous b? 738 00:36:08,864 --> 00:36:10,256 >> AUDIENCE: [inaudible]. 739 00:36:10,256 --> 00:36:11,335 >> ANDI PENG: Que diriez-c? 740 00:36:11,335 --> 00:36:12,490 >> AUDIENCE: [inaudible]. 741 00:36:12,490 --> 00:36:14,530 >> ANDI PENG: Et que diriez-vous des pointeurs? 742 00:36:14,530 --> 00:36:15,800 They-- sont la même chose, non? 743 00:36:15,800 --> 00:36:20,640 744 00:36:20,640 --> 00:36:21,940 D'ACCORD. 745 00:36:21,940 --> 00:36:23,820 Maintenant troisième ligne. 746 00:36:23,820 --> 00:36:26,400 747 00:36:26,400 --> 00:36:27,350 Peu plus délicat. 748 00:36:27,350 --> 00:36:29,760 b égale étoiles pa. 749 00:36:29,760 --> 00:36:34,189 Quelqu'un peut me dire, d'abord, ce qui fait pa étoiles égale? 750 00:36:34,189 --> 00:36:36,159 >> PUBLIC: Il est la valeur qui est stocké à une. 751 00:36:36,159 --> 00:36:36,950 ANDI PENG: Exactement. 752 00:36:36,950 --> 00:36:38,070 Et quelle est la valeur qui est stocké à une? 753 00:36:38,070 --> 00:36:38,860 >> Audience: 100. 754 00:36:38,860 --> 00:36:39,660 >> ANDI PENG: OK. 755 00:36:39,660 --> 00:36:43,462 Donc, ce qui serait un être après l'exécution de cette ligne de code? 756 00:36:43,462 --> 00:36:44,760 >> AUDIENCE: [inaudible]. 757 00:36:44,760 --> 00:36:45,870 >> ANDI PENG: Qu'en est-il b? 758 00:36:45,870 --> 00:36:46,780 >> Audience: 100. 759 00:36:46,780 --> 00:36:47,620 >> ANDI PENG: Ouais. 760 00:36:47,620 --> 00:36:49,995 Et puis tout le reste est à peu près inchangée, à droite? 761 00:36:49,995 --> 00:36:51,239 Parce que nous ne touchons pas. 762 00:36:51,239 --> 00:36:55,370 763 00:36:55,370 --> 00:36:57,010 Frais. 764 00:36:57,010 --> 00:36:58,390 Quatrième ligne. 765 00:36:58,390 --> 00:37:00,390 Un peu plus complexe. 766 00:37:00,390 --> 00:37:06,910 Donc pc-- encore une fois, pc est le pointeur qui pointait vers C-- égale pa. 767 00:37:06,910 --> 00:37:11,520 768 00:37:11,520 --> 00:37:12,360 Qu'est-ce qu'un? 769 00:37:12,360 --> 00:37:14,525 >> Audience: 100. 770 00:37:14,525 --> 00:37:15,400 ANDI PENG: Quel est b? 771 00:37:15,400 --> 00:37:17,920 Audience: 100. 772 00:37:17,920 --> 00:37:18,862 ANDI PENG: Qu'est-ce que c? 773 00:37:18,862 --> 00:37:19,993 AUDIENCE: 5. 774 00:37:19,993 --> 00:37:20,867 ANDI PENG: Quelle est pa? 775 00:37:20,867 --> 00:37:22,775 AUDIENCE: Ampersand a. 776 00:37:22,775 --> 00:37:23,730 ANDI PENG: pb? 777 00:37:23,730 --> 00:37:26,010 AUDIENCE: b Ampersand. 778 00:37:26,010 --> 00:37:27,730 ANDI PENG: Et difficile, ce qui est pc maintenant? 779 00:37:27,730 --> 00:37:28,410 AUDIENCE: Ampersand a. 780 00:37:28,410 --> 00:37:29,034 ANDI PENG: Yay. 781 00:37:29,034 --> 00:37:31,790 Woo hoo. 782 00:37:31,790 --> 00:37:32,500 Les gars, vous voyez? 783 00:37:32,500 --> 00:37:33,282 Ceci est tout droit. 784 00:37:33,282 --> 00:37:33,990 Il est pas trop mal. 785 00:37:33,990 --> 00:37:38,730 Nous avons plus de bonbons si elle est pas tout à droite, mais je pense qu'il est tout droit. 786 00:37:38,730 --> 00:37:41,900 Et nous allons aller sur un seul plus avant de reprendre les plus durs. 787 00:37:41,900 --> 00:37:43,710 Les réponses que je ai ici. 788 00:37:43,710 --> 00:37:47,050 >> Essentiellement, sachez que cela est tout comme les mathématiques à ce point. 789 00:37:47,050 --> 00:37:53,240 Lorsque vous avez des équations simples comme un plus b, une fois c, qui est facile à faire. 790 00:37:53,240 --> 00:37:56,390 Et quand vous commencez expansion sur il suffit de passer commande des opérations. 791 00:37:56,390 --> 00:37:57,830 Même chose que précédemment. 792 00:37:57,830 --> 00:38:00,030 >> Gardez une trace de si votre étoiles est avant quelque chose. 793 00:38:00,030 --> 00:38:01,640 Cela vous dit la valeur. 794 00:38:01,640 --> 00:38:04,640 Si vous avez un et avant quelque chose, il vous indique l'adresse. 795 00:38:04,640 --> 00:38:07,860 Et vous devez attribuer soit pointeurs ou cette valeur. 796 00:38:07,860 --> 00:38:11,260 Allons donc au cours de cette dernière réel rapide. 797 00:38:11,260 --> 00:38:12,520 Non ce dernier, désolé. 798 00:38:12,520 --> 00:38:13,340 En fait, les gars vous pouvez choisir. 799 00:38:13,340 --> 00:38:16,006 Quel est celui que vous les gars voulez aller sur le restant de trois 800 00:38:16,006 --> 00:38:17,449 Que nous avons? 801 00:38:17,449 --> 00:38:20,490 Je ne pense pas que nous puissions le faire parce que nous ne pouvons pas simplement aller à la ligne. 802 00:38:20,490 --> 00:38:21,000 D'ACCORD. 803 00:38:21,000 --> 00:38:25,700 Les gars, vous ne disposez pas d'un choix, il est seulement le troisième durer un. 804 00:38:25,700 --> 00:38:29,228 >> Étoile pc égale b fois c. 805 00:38:29,228 --> 00:38:30,144 >> AUDIENCE: Star pb? 806 00:38:30,144 --> 00:38:32,117 >> AUDIENCE: Star pb. 807 00:38:32,117 --> 00:38:32,825 ANDI PENG: Désolé? 808 00:38:32,825 --> 00:38:33,599 AUDIENCE: Star pb. 809 00:38:33,599 --> 00:38:34,390 ANDI PENG: Star pb. 810 00:38:34,390 --> 00:38:35,100 Oh, mon mauvais. 811 00:38:35,100 --> 00:38:38,647 Étoile pb égale b fois c. 812 00:38:38,647 --> 00:38:40,230 Je vais vous donner les gars de 10 secondes. 813 00:38:40,230 --> 00:38:41,140 Il suffit de penser rapidement. 814 00:38:41,140 --> 00:38:43,450 Ce que nous avons est donc Jusqu'à présent, ce qui se passe après que nous 815 00:38:43,450 --> 00:38:46,770 exécuter cette cinquième ligne juste là? 816 00:38:46,770 --> 00:38:54,030 817 00:38:54,030 --> 00:38:55,980 D'ACCORD. 818 00:38:55,980 --> 00:38:58,720 Qu'est-ce qu'un? 819 00:38:58,720 --> 00:38:59,560 >> Audience: 100. 820 00:38:59,560 --> 00:39:02,470 >> ANDI Peng: 100. 821 00:39:02,470 --> 00:39:03,610 Quel est b maintenant? 822 00:39:03,610 --> 00:39:04,330 >> Audience: 500. 823 00:39:04,330 --> 00:39:05,250 >> ANDI PENG: Bon. 824 00:39:05,250 --> 00:39:08,570 Quelqu'un veut-il expliquer moi pourquoi c'est 500? 825 00:39:08,570 --> 00:39:10,540 Je ne me sens pas comme nous en fait jamais touché b. 826 00:39:10,540 --> 00:39:13,950 Comment avons-nous réussi à changer le valeur de b sans toucher b? 827 00:39:13,950 --> 00:39:15,090 Ouais? 828 00:39:15,090 --> 00:39:18,239 >> AUDIENCE: Parce pb étoiles signifie la valeur à pb-- 829 00:39:18,239 --> 00:39:19,030 ANDI PENG: Exactement. 830 00:39:19,030 --> 00:39:19,790 AUDIENCE: --which est b. 831 00:39:19,790 --> 00:39:20,581 ANDI PENG: Exactement. 832 00:39:20,581 --> 00:39:26,880 Donc, ici, dans notre schéma, notre pointeur pb est effectivement dirigée à ce droit 833 00:39:26,880 --> 00:39:28,690 ici, ce qui est le b physique réelle. 834 00:39:28,690 --> 00:39:31,340 Et si vous alliez et vous faites pb étoiles, qui est 835 00:39:31,340 --> 00:39:36,080 la suite de votre flèche de votre pointeur et changer physiquement la valeur de b. 836 00:39:36,080 --> 00:39:39,532 Voilà pourquoi nous avons changé à B 500 sans toucher b. 837 00:39:39,532 --> 00:39:42,490 Et puis tout le reste demeure même parce que nous ne touchons que. 838 00:39:42,490 --> 00:39:47,060 839 00:39:47,060 --> 00:39:48,530 Voilà b. 840 00:39:48,530 --> 00:39:49,420 Frais. 841 00:39:49,420 --> 00:39:50,485 Et alors-- 842 00:39:50,485 --> 00:39:51,910 >> AUDIENCE: Je dois juste une question. 843 00:39:51,910 --> 00:39:52,730 >> ANDI PENG: Ouais? 844 00:39:52,730 --> 00:39:56,000 >> Public: Depuis we've-- il n'y a plus c esperluette, 845 00:39:56,000 --> 00:39:59,620 ce que cela signifie une esperluette rediriger la même chose maintenant? 846 00:39:59,620 --> 00:40:00,520 >> ANDI PENG: Yep. 847 00:40:00,520 --> 00:40:01,582 Ainsi-- 848 00:40:01,582 --> 00:40:03,540 Auditoire: Alors, la flèche sorte de déplace simplement et-- 849 00:40:03,540 --> 00:40:04,030 ANDI PENG: Donc essentially-- 850 00:40:04,030 --> 00:40:05,405 AUDIENCE: --now nous ne pouvons pas access-- 851 00:40:05,405 --> 00:40:08,387 ANDI PENG: --Quand nous déréférencer c on-- je faussaire. 852 00:40:08,387 --> 00:40:08,970 Ca c'était quoi? 853 00:40:08,970 --> 00:40:09,560 La troisième ligne? 854 00:40:09,560 --> 00:40:10,060 Quatrième. 855 00:40:10,060 --> 00:40:11,490 Quatrième ligne. 856 00:40:11,490 --> 00:40:14,910 Tout ce que nous avons fait était, essentiellement, changer cette flèche 857 00:40:14,910 --> 00:40:16,680 et l'ont dirigé vers une place. 858 00:40:16,680 --> 00:40:19,480 >> Auditoire: Alors, nous ne pouvons plus accéder c. 859 00:40:19,480 --> 00:40:22,520 >> ANDI PENG: Si vous aviez cette exacte nombre, on pouvait y accéder. 860 00:40:22,520 --> 00:40:23,260 Mais non. 861 00:40:23,260 --> 00:40:25,680 Nous ne disposons pas un pointeur pointant vers c plus. 862 00:40:25,680 --> 00:40:27,430 Je pense que si vous vouliez d'accéder de nouveau, vous 863 00:40:27,430 --> 00:40:30,390 créerait une autre pointeur qui re-a à c 864 00:40:30,390 --> 00:40:32,856 ou déréférencé et a fait ce retour. 865 00:40:32,856 --> 00:40:35,730 Donc, non, comme de maintenant, les trois pointeurs, aucun d'entre eux soulignent c. 866 00:40:35,730 --> 00:40:38,800 867 00:40:38,800 --> 00:40:40,110 >> Tout le monde la bonne? 868 00:40:40,110 --> 00:40:41,440 Les réponses sont en ligne. 869 00:40:41,440 --> 00:40:45,210 Sentez-vous libre pour, après l'article, aller sur les deux derniers tests et vous-mêmes. 870 00:40:45,210 --> 00:40:47,840 Mêmes concepts, juste un peu plus embêtant. 871 00:40:47,840 --> 00:40:51,860 Il suffit de suivre à travers la logique de pourquoi les choses sont des choses différentes. 872 00:40:51,860 --> 00:40:54,530 Et l'indice, les pointeurs sont un sujet que nous aimons 873 00:40:54,530 --> 00:40:58,780 pour couvrir le quiz parce qu'ils sont conceptuellement très difficile. 874 00:40:58,780 --> 00:41:01,360 Donc, je dirais que vous examinent tous les gars ce tableau 875 00:41:01,360 --> 00:41:05,916 ou réduire à des concepts similaires cela avant votre test la semaine prochaine. 876 00:41:05,916 --> 00:41:06,864 >> AUDIENCE: Excusez-moi. 877 00:41:06,864 --> 00:41:07,530 >> ANDI PENG: Ouais? 878 00:41:07,530 --> 00:41:09,708 AUDIENCE: [inaudible] finale One-- [inaudible]. 879 00:41:09,708 --> 00:41:12,710 880 00:41:12,710 --> 00:41:15,770 >> ANDI PENG: 50.000? 881 00:41:15,770 --> 00:41:17,850 Je besoin de le suivre vers le bas. 882 00:41:17,850 --> 00:41:22,530 Mais somewhere-- Je pense que la ligne avant, vous avez créé valeur de c géant. 883 00:41:22,530 --> 00:41:26,250 c est égal à cette chose géant qui est 100 fois 500. 884 00:41:26,250 --> 00:41:27,006 Non. 885 00:41:27,006 --> 00:41:28,000 >> AUDIENCE: [inaudible]. 886 00:41:28,000 --> 00:41:28,625 >> ANDI PENG: Oui. 887 00:41:28,625 --> 00:41:30,620 100 fois 100 qui est 10 000. 888 00:41:30,620 --> 00:41:32,020 Qui est 10.000. 889 00:41:32,020 --> 00:41:35,410 Donc, retour là-bas vous êtes multipliant b et c. 890 00:41:35,410 --> 00:41:43,165 Donc, le pointeur qui pointe vers b-- qui est la valeur de temps 500-- a-- 891 00:41:43,165 --> 00:41:44,480 >> AUDIENCE: [inaudible]. 892 00:41:44,480 --> 00:41:45,730 ANDI PENG: Peut-être qui est faux. 893 00:41:45,730 --> 00:41:49,514 AUDIENCE: Non, non, il est pas. [Inaudible] pointeur au c est maintenant pointée vers a-- 894 00:41:49,514 --> 00:41:50,180 ANDI PENG: Ouais. 895 00:41:50,180 --> 00:41:50,840 Il a raison. 896 00:41:50,840 --> 00:41:56,477 >> AUDIENCE: --il est à sa au equals un times-- il est la valeur de c. 897 00:41:56,477 --> 00:41:59,560 ANDI PENG: Pouvez-vous dire que un peu peu plus fort que tout le monde peut vous entendre? 898 00:41:59,560 --> 00:42:04,879 Auditoire: Alors pointeur au c pointent maintenant à ce que le pointeur d'un utilisé pour pointer 899 00:42:04,879 --> 00:42:09,460 to-- et does-- toujours, mais ils soulignent la même chose qui est l'un, non? 900 00:42:09,460 --> 00:42:12,925 La valeur a toutefois il a été nouvellement définies. 901 00:42:12,925 --> 00:42:17,875 Et au début de ce que vous êtes dire un était déjà 100 fois 902 00:42:17,875 --> 00:42:21,340 la valeur à b qui est 500. 903 00:42:21,340 --> 00:42:24,305 Et donc ce est cependant beaucoup qui est. 904 00:42:24,305 --> 00:42:24,805 50000. 905 00:42:24,805 --> 00:42:32,860 Ils vous réassignez cela à ce que la espace mémoire au c est-- le pointeur à c 906 00:42:32,860 --> 00:42:34,510 est montrant qui est un. 907 00:42:34,510 --> 00:42:38,460 Donc, vous redéfinissez un être 50.000. 908 00:42:38,460 --> 00:42:40,210 ANDI PENG: Elle ne pouvait enseigner section pour moi. 909 00:42:40,210 --> 00:42:41,260 La prochaine fois, il est tout à toi. 910 00:42:41,260 --> 00:42:41,440 Ici. 911 00:42:41,440 --> 00:42:42,564 Voici plus de bonbons pour cela. 912 00:42:42,564 --> 00:42:45,790 Vous méritez des bonbons pour cela. 913 00:42:45,790 --> 00:42:47,260 >> AUDIENCE: Je suis presque surpris que. 914 00:42:47,260 --> 00:42:47,660 >> ANDI PENG: Vous avez presque attrapé ça. 915 00:42:47,660 --> 00:42:48,450 C'est d'accord. 916 00:42:48,450 --> 00:42:48,950 Ouais. 917 00:42:48,950 --> 00:42:50,033 Mais elle était tout à fait exact. 918 00:42:50,033 --> 00:42:54,469 Donc ce que vous avez à faire est that-- je pense que nous 919 00:42:54,469 --> 00:42:56,510 avoir à suivre le fait que les pointeurs sont désormais 920 00:42:56,510 --> 00:42:57,880 pointant vers des valeurs différentes. 921 00:42:57,880 --> 00:43:01,785 Ainsi, le value-- désolés, la pointeur de c rejointoyée à un. 922 00:43:01,785 --> 00:43:04,390 Et pour que déplacé tous nos numéros. 923 00:43:04,390 --> 00:43:08,930 Et voilà pourquoi, lorsque vous accédez à la valeur qui y sont stockées, il est différent. 924 00:43:08,930 --> 00:43:10,490 Cela a-t-il du sens? 925 00:43:10,490 --> 00:43:11,380 D'ACCORD. 926 00:43:11,380 --> 00:43:12,820 Frais. 927 00:43:12,820 --> 00:43:16,635 Tout le monde bon, avant de passer? 928 00:43:16,635 --> 00:43:25,332 >> AUDIENCE: the-- fait quand vous allez vers le bas les lignes de la colonne de gauche, 929 00:43:25,332 --> 00:43:30,494 ne la première rangée affecte la deuxième rangée puis l'second-- comme, il est tous-- 930 00:43:30,494 --> 00:43:31,160 ANDI PENG: Ouais. 931 00:43:31,160 --> 00:43:37,610 Alors, imaginez son code où je simplement saisi dans une égale b fois c, une étoile est égale à c. 932 00:43:37,610 --> 00:43:40,290 Imaginez que je l'ai simplement manqué ce code 933 00:43:40,290 --> 00:43:42,710 et je ne l'ai pas imprimer ce toutes ces choses étaient. 934 00:43:42,710 --> 00:43:46,200 Si je devais juste pour imprimer la première chose en haut, il serait ici. 935 00:43:46,200 --> 00:43:48,510 Si après avoir couru tous ces lignes de code, 936 00:43:48,510 --> 00:43:51,160 ce que ces valeurs doivent être à la fin sont que. 937 00:43:51,160 --> 00:43:53,290 >> Donc, je l'ai effectivement écrit un programme ici. 938 00:43:53,290 --> 00:43:55,840 Je ne l'ai pas fait tout la multiplication. 939 00:43:55,840 --> 00:43:58,310 Mais imaginez. 940 00:43:58,310 --> 00:44:00,370 Donc ici, je viens d'un programme appelé pointeurs. 941 00:44:00,370 --> 00:44:04,190 Je vais agrandir si vous guys-- OK. 942 00:44:04,190 --> 00:44:07,580 Donc, je l'ai créé variables a, b et c. 943 00:44:07,580 --> 00:44:09,640 Je me suis fixé les égal à 3, 4, et 5, et je l'ai 944 00:44:09,640 --> 00:44:11,770 créé leurs pointeurs correspondants. 945 00:44:11,770 --> 00:44:14,550 Et puis ici, je vais juste d'imprimer ce qui est. 946 00:44:14,550 --> 00:44:15,833 Alors permettez-moi de courir que. 947 00:44:15,833 --> 00:44:21,520 948 00:44:21,520 --> 00:44:24,750 >> Avez-vous les gars de la merde. 949 00:44:24,750 --> 00:44:28,150 Voyez-vous comment un gars, b et c sont ces valeurs 950 00:44:28,150 --> 00:44:33,530 mais leurs pointeurs sont ce géant valeur des ordures que nous ne nous soucions pas? 951 00:44:33,530 --> 00:44:36,690 Donc, si je devais effectivement brancher dans toute la multiplication 952 00:44:36,690 --> 00:44:39,770 puis réimprimer tous cela, il serait à exécuter 953 00:44:39,770 --> 00:44:44,509 pour ce qui est à la base. 954 00:44:44,509 --> 00:44:47,300 Donc, si vous les gars veulent jouer avec codage effectivement physiquement, 955 00:44:47,300 --> 00:44:49,000 vous les gars pouvez suffit de brancher tous ceux. 956 00:44:49,000 --> 00:44:52,860 Le code sera en ligne, puis votre valeurs doivent imprimer à cette suite. 957 00:44:52,860 --> 00:44:56,170 >> Et puis vous verrez comment le pointeur adresses ont effectivement réaffectés. 958 00:44:56,170 --> 00:44:59,190 Donc, vous verrez comment la adresse du c devient réalité 959 00:44:59,190 --> 00:45:00,920 à égale quel que soit l'adresse d'un été. 960 00:45:00,920 --> 00:45:04,140 Et ils correspondent à ce que qui est grand nombre. 961 00:45:04,140 --> 00:45:06,530 Bonne question. 962 00:45:06,530 --> 00:45:07,550 Tout le monde va bien? 963 00:45:07,550 --> 00:45:10,300 Un dernier appel pour les questions. 964 00:45:10,300 --> 00:45:11,590 D'ACCORD. 965 00:45:11,590 --> 00:45:12,090 Bien. 966 00:45:12,090 --> 00:45:15,940 Alors préparez-vous à avoir votre esprit soufflé un peu peu plus. 967 00:45:15,940 --> 00:45:18,000 Les tableaux sont en fait que des pointeurs. 968 00:45:18,000 --> 00:45:19,010 Voilà tout ce qu'ils sont. 969 00:45:19,010 --> 00:45:20,410 Et rappelez-vous, ce sont des chaînes? 970 00:45:20,410 --> 00:45:21,630 Ils sont aussi des tableaux. 971 00:45:21,630 --> 00:45:23,110 Donc ce sont des chaînes vraiment? 972 00:45:23,110 --> 00:45:27,100 Ils sont comme des pointeurs vers la début d'un caractère de plus de caractères. 973 00:45:27,100 --> 00:45:29,970 >> Donc, il est juste concepts qui commencent à construire les uns sur les autres. 974 00:45:29,970 --> 00:45:32,030 Voilà donc pourquoi-- vous rappelez-vous en conférence, David, 975 00:45:32,030 --> 00:45:34,990 quand il a eu cette comparaison int chaîne maman 976 00:45:34,990 --> 00:45:37,640 est quelque chose et puis une autre chaîne maman et vous 977 00:45:37,640 --> 00:45:41,240 essayer d'assimiler les deux à l'autre, ils vous donnent des valeurs différentes. 978 00:45:41,240 --> 00:45:44,370 Il est parce que les chaînes eux-mêmes ne sont pas des valeurs. 979 00:45:44,370 --> 00:45:48,860 Tout ce qu'ils sont sont des adresses de mémoire char-- Ce sont des tableaux de caractères et les tableaux 980 00:45:48,860 --> 00:45:50,050 sont des pointeurs juste. 981 00:45:50,050 --> 00:45:54,022 >> Donc, en substance, lorsque David était comparing-- 982 00:45:54,022 --> 00:45:55,355 est-ce OK si je efface tout cela? 983 00:45:55,355 --> 00:46:02,320 984 00:46:02,320 --> 00:46:09,750 Donc, en conférence lorsque David mère avait équivaut égaux maman, 985 00:46:09,750 --> 00:46:11,630 pour nous cela semble être la même chose. 986 00:46:11,630 --> 00:46:12,317 Droit? 987 00:46:12,317 --> 00:46:15,150 Mais, dans l'ordinateur sous la hotte, ce qui se passe 988 00:46:15,150 --> 00:46:18,380 est que cette chaîne, tout ce qui est est un tableau. 989 00:46:18,380 --> 00:46:21,420 990 00:46:21,420 --> 00:46:25,390 Avec un ampersand-- ou, désolé, avec une terminaison nulle à la fin. 991 00:46:25,390 --> 00:46:28,311 992 00:46:28,311 --> 00:46:28,810 Droit? 993 00:46:28,810 --> 00:46:29,940 Backslash 0. 994 00:46:29,940 --> 00:46:32,900 Mauvais barre oblique inverse. 995 00:46:32,900 --> 00:46:35,960 >> Donc, tout ce qu'ils were-- tous ces deux chaînes were-- 996 00:46:35,960 --> 00:46:40,360 sont gamme de fours de taille avec les lettres de maman et maman. 997 00:46:40,360 --> 00:46:44,780 Mais ce sont vraiment des tableaux sont juste pointeurs vers un endroit spécifique de la mémoire 998 00:46:44,780 --> 00:46:47,140 qui raconte vous de commencer votre tableau. 999 00:46:47,140 --> 00:46:52,370 Donc dans ce cas, tout cela était était juste une certaine valeur d'ordures, 1000 00:46:52,370 --> 00:46:54,230 certains pointeur aléatoire. 1001 00:46:54,230 --> 00:46:56,330 Et tout cela était été une autre valeur des ordures. 1002 00:46:56,330 --> 00:46:59,830 Disons simplement 0x200. 1003 00:46:59,830 --> 00:47:02,410 >> Et donc quand vous essayez de l'égalité les deux à l'autre, 1004 00:47:02,410 --> 00:47:06,130 ils évaluent à false parce la addresses-- les pointeurs 1005 00:47:06,130 --> 00:47:08,390 were-- qu'ils étaient différents. 1006 00:47:08,390 --> 00:47:11,400 Considérant qu'il est différent si vous êtes essayer de comparer entiers réels. 1007 00:47:11,400 --> 00:47:15,820 Comme si vous vouliez compare-- dans la dernière example-- int A à B, 1008 00:47:15,820 --> 00:47:17,640 ils évalueraient à vrai comme l'a dit Elliot 1009 00:47:17,640 --> 00:47:19,431 parce qu'ils étaient des entiers qui ont été stockées 1010 00:47:19,431 --> 00:47:21,320 et vous évaluez seulement les valeurs. 1011 00:47:21,320 --> 00:47:25,090 Voici, parce que les chaînes sont des tableaux et tous les tableaux sont des pointeurs, 1012 00:47:25,090 --> 00:47:28,080 Voilà pourquoi ils ne sont pas égal à l'autre. 1013 00:47:28,080 --> 00:47:31,210 >> Alors sorte de confusion, ce graphique. 1014 00:47:31,210 --> 00:47:32,450 Mais disons simplement imaginer. 1015 00:47:32,450 --> 00:47:38,110 Nous avons créer un tableau de taille 3 avec indice de 0 à 2-- 0, 1016 00:47:38,110 --> 00:47:41,530 1, 2 avec les valeurs de 1, 2, 3 et stockées en eux. 1017 00:47:41,530 --> 00:47:43,820 Toute la gamme vraiment does-- ici, disons juste 1018 00:47:43,820 --> 00:47:46,720 dis je crée un pointeur à ce tableau qui est 1019 00:47:46,720 --> 00:47:50,810 accéder à la valeur de la premier indice de ce tableau. 1020 00:47:50,810 --> 00:47:52,890 Alors, voici ce serait 0. 1021 00:47:52,890 --> 00:47:53,390 Droit? 1022 00:47:53,390 --> 00:47:56,820 Tout le monde comprend comment cette première ligne évalué? 1023 00:47:56,820 --> 00:47:57,420 Génial. 1024 00:47:57,420 --> 00:48:00,800 >> Et donc si vous vouliez pour initialiser les valeurs supplémentaires après que, 1025 00:48:00,800 --> 00:48:04,390 tout ce que nous faisons est la réaffectation. 1026 00:48:04,390 --> 00:48:08,810 Donc, 0, 1, 2, 1. 1027 00:48:08,810 --> 00:48:12,770 Donc, ce pointeur qui était autrefois pointant vers ici, tout ce que nous faisons 1028 00:48:12,770 --> 00:48:15,540 se déplace vers le bas. 1029 00:48:15,540 --> 00:48:16,970 Voilà ce que le plus 1 fait. 1030 00:48:16,970 --> 00:48:18,500 Et puis nous pouvons mettre 2 il. 1031 00:48:18,500 --> 00:48:23,250 Si nous voulions mettre 3 dans l'un après, nous effacer ce pointeur, 1032 00:48:23,250 --> 00:48:25,170 mettre 3 là. 1033 00:48:25,170 --> 00:48:26,420 Est-ce logique tout le monde? 1034 00:48:26,420 --> 00:48:26,920 Ouais. 1035 00:48:26,920 --> 00:48:28,086 Avez-vous avez une question? 1036 00:48:28,086 --> 00:48:30,711 PUBLIC: Il est [inaudible] ont une question, je vais le dire quand même. 1037 00:48:30,711 --> 00:48:35,496 Je ne pense pas qu'il est en fait un Mais-- question en anglais, array 1038 00:48:35,496 --> 00:48:37,448 est égal à 1 fait sens. 1039 00:48:37,448 --> 00:48:39,888 Nous sommes comme, OK, la première chose. 1040 00:48:39,888 --> 00:48:44,280 Mais les choses sont 0 index [Inaudible] le tableau est égale à 0 1041 00:48:44,280 --> 00:48:48,024 pour indiquer la première place. 1042 00:48:48,024 --> 00:48:48,690 ANDI PENG: Ouais. 1043 00:48:48,690 --> 00:48:53,740 Donc en fait ce que je fais ici est Je ne suis pas accéder au premier indice. 1044 00:48:53,740 --> 00:48:57,930 Tout ce que je doing-- Alors tout d'abord, me dire ce que ce que le tableau d'étoiles faire? 1045 00:48:57,930 --> 00:48:59,480 Qu'est-ce qu'une étoile avant un pointeur faire? 1046 00:48:59,480 --> 00:49:00,855 >> PUBLIC: Il indique un pointeur. 1047 00:49:00,855 --> 00:49:02,910 Que vous êtes déclarer un pointeur. 1048 00:49:02,910 --> 00:49:04,380 Il DE-- 1049 00:49:04,380 --> 00:49:07,520 >> PENG ANDI: Il déréférence quels moyens il va et effectivement obtient la valeur. 1050 00:49:07,520 --> 00:49:08,020 Droit? 1051 00:49:08,020 --> 00:49:13,030 Donc dans ce cas, vous souhaitez obtenir la valeur ici et définir ce à 1. 1052 00:49:13,030 --> 00:49:13,800 Ouais? 1053 00:49:13,800 --> 00:49:17,050 Donc, je ne suis pas actually-- Je ne sais pas soucient vraiment de l'indice de cela, 1054 00:49:17,050 --> 00:49:21,406 tout ce que je fais est juste itération bas en déplaçant mon pointeur vers le bas du tableau. 1055 00:49:21,406 --> 00:49:23,280 Et puis finalement, je avoir à l'arrêter, non? 1056 00:49:23,280 --> 00:49:26,750 Et la façon dont je me arrête est quand je frappe, dans le cas 1057 00:49:26,750 --> 00:49:28,750 d'une chaîne, un terminateur null. 1058 00:49:28,750 --> 00:49:32,710 Je sais, oh, si je frappe un back-- si je vois 0 barre oblique inverse, je sais que je suis fait avec ce 1059 00:49:32,710 --> 00:49:35,270 et je sais que je peux juste arrêter itérer. 1060 00:49:35,270 --> 00:49:36,200 Très bonne question. 1061 00:49:36,200 --> 00:49:40,210 >> Et nous allons vraiment aller plus loin en profondeur dans la semaine prochaine 1062 00:49:40,210 --> 00:49:43,990 parce que la pièce qui va impliquer beaucoup de l'utilisation de pointeurs. 1063 00:49:43,990 --> 00:49:48,459 Mais il suffit de savoir qu'en ce moment, qui est juste une plus-- différente 1064 00:49:48,459 --> 00:49:51,250 qui est juste une façon différente pour l'ordinateur pour écrire, essentiellement, 1065 00:49:51,250 --> 00:49:52,470 ce que nous avons fait. 1066 00:49:52,470 --> 00:49:54,900 Comme David dit dans des conférences, la façon dont nous 1067 00:49:54,900 --> 00:50:01,720 accéder à un tableau est juste en faisant tableau 0, 0 support, si nous venons 1068 00:50:01,720 --> 00:50:04,050 voulu pour accéder à la première valeur. 1069 00:50:04,050 --> 00:50:10,280 >> Tout l'ordinateur est en train de faire est tournant en ce que lui-même et l'itération. 1070 00:50:10,280 --> 00:50:13,580 Donc, nous l'appelons syntaxique de sucre qui est juste 1071 00:50:13,580 --> 00:50:18,420 une façon élégante de dire convivial les moyens de nous en sachant comment programmer. 1072 00:50:18,420 --> 00:50:21,560 Mais l'ordinateur dessous, ce qu'il fait, 1073 00:50:21,560 --> 00:50:23,997 il est en fait juste avoir un pointeur qui est réglage. 1074 00:50:23,997 --> 00:50:26,330 Mais la façon dont nous l'écrivons, parce qu'il est plus facile pour nous 1075 00:50:26,330 --> 00:50:30,240 penser à des choses en termes de boîtes et comment descendre boîtes, 1076 00:50:30,240 --> 00:50:32,190 est en ayant les parenthèses. 1077 00:50:32,190 --> 00:50:36,394 Désolé, qui était vraiment, vraiment mal Mais-- ouais. 1078 00:50:36,394 --> 00:50:38,310 AUDIENCE: Alors, comment serait vous comparez deux chaînes 1079 00:50:38,310 --> 00:50:40,560 pour voir si ils sont égaux entre eux? 1080 00:50:40,560 --> 00:50:42,690 >> ANDI PENG: David a écrit ce programme en conférence 1081 00:50:42,690 --> 00:50:45,274 donc je vais juste aller plus rapidement et brièvement. 1082 00:50:45,274 --> 00:50:47,440 La façon dont vous souhaitez le faire est ce que vous le feriez effectivement 1083 00:50:47,440 --> 00:50:51,300 besoin d'aller et de comparer la addresses-- ou les valeurs 1084 00:50:51,300 --> 00:50:52,810 obtenue à partir des pointeurs. 1085 00:50:52,810 --> 00:50:55,140 Alors rappelez-vous, comment vous faire obtenir la valeur ici? 1086 00:50:55,140 --> 00:50:56,825 Je ne me soucie pas de l'adresse ici. 1087 00:50:56,825 --> 00:50:58,950 Comment puis-je réellement obtenir la valeur de tout ce qui est ici? 1088 00:50:58,950 --> 00:50:59,470 >> AUDIENCE: [inaudible]. 1089 00:50:59,470 --> 00:51:00,261 >> ANDI PENG: Exactement. 1090 00:51:00,261 --> 00:51:05,090 Donc, vous comparez l'étoile ici contre la star ici. 1091 00:51:05,090 --> 00:51:06,150 Sont ceux égale. 1092 00:51:06,150 --> 00:51:07,690 Et puis vous descendez. 1093 00:51:07,690 --> 00:51:09,530 Êtes la star ici et la star ici égal? 1094 00:51:09,530 --> 00:51:10,030 D'ACCORD. 1095 00:51:10,030 --> 00:51:10,283 Ils sont égaux. 1096 00:51:10,283 --> 00:51:12,866 Et vous continuez à descendre jusqu'à ce que vous avez touché la fin des deux. 1097 00:51:12,866 --> 00:51:16,190 Et si tous sont égaux, alors vous savez que votre chaîne est égale. 1098 00:51:16,190 --> 00:51:18,130 Et C a effectivement un fonction écrite appelé 1099 00:51:18,130 --> 00:51:20,713 Chaîne Comp qui en fait juste est-ce que pour vous afin que vous ne ' 1100 00:51:20,713 --> 00:51:22,140 avoir à l'écrire vous-même. 1101 00:51:22,140 --> 00:51:23,274 Ouais? 1102 00:51:23,274 --> 00:51:26,970 >> AUDIENCE: Je pense que dans la leçon est quand on ne le compare. 1103 00:51:26,970 --> 00:51:29,520 Nous ne vraiment besoin d'un compteur comme pi, non? 1104 00:51:29,520 --> 00:51:34,310 >> ANDI PENG: Vous ne faites pas parce que nous ne nous soucions pas vraiment 1105 00:51:34,310 --> 00:51:36,250 combien de boîtes que nous avons réitéré à travers. 1106 00:51:36,250 --> 00:51:39,580 Tous nous nous soucions est que nous allons continuer jusqu'à ce que je sais pour arrêter. 1107 00:51:39,580 --> 00:51:41,990 Et vous savez d'arrêter quand il ya une sorte d'indication 1108 00:51:41,990 --> 00:51:45,310 que vous êtes à un terminateur null. 1109 00:51:45,310 --> 00:51:45,930 Ouais. 1110 00:51:45,930 --> 00:51:47,154 Ainsi-- 1111 00:51:47,154 --> 00:51:48,070 AUDIENCE: [inaudible]. 1112 00:51:48,070 --> 00:51:48,736 ANDI PENG: Ouais. 1113 00:51:48,736 --> 00:51:51,950 Ainsi, dans le cas de comparaison cordes, je ne pas vraiment 1114 00:51:51,950 --> 00:51:54,207 soins comment de nombreuses lettres soient: je dois comparer 1115 00:51:54,207 --> 00:51:56,540 si elles sont vraies ou fausses, si elles sont égales entre elles. 1116 00:51:56,540 --> 00:51:58,914 Je ne me soucie pas combien de lettres sont dans chacun d'eux, non? 1117 00:51:58,914 --> 00:52:01,130 Je me soucie simplement que cette correspond avec ce et celui 1118 00:52:01,130 --> 00:52:05,311 après les matches et l'un après correspond à tout le chemin jusqu'à la fin. 1119 00:52:05,311 --> 00:52:05,810 Droit? 1120 00:52:05,810 --> 00:52:07,000 Cela a-t-il du sens? 1121 00:52:07,000 --> 00:52:10,166 >> Donc, je ne me soucie pas vraiment combien de lettres, Je me soucie seulement que toutes les lettres 1122 00:52:10,166 --> 00:52:11,050 rencontre. 1123 00:52:11,050 --> 00:52:12,910 Ouais. 1124 00:52:12,910 --> 00:52:13,920 D'ACCORD. 1125 00:52:13,920 --> 00:52:16,840 Puis-je passer de tout cela? 1126 00:52:16,840 --> 00:52:18,489 Génial. 1127 00:52:18,489 --> 00:52:21,280 Nous sommes un peu court sur temps, je vais vous permettre simplement 1128 00:52:21,280 --> 00:52:23,670 les gars à regarder brièvement à cela. 1129 00:52:23,670 --> 00:52:26,430 Lancez-le dans votre ID si vous les gars êtes curieux. 1130 00:52:26,430 --> 00:52:30,030 Et vous les gars peuvent voir ce que ce sera imprimer. 1131 00:52:30,030 --> 00:52:30,640 D'ACCORD. 1132 00:52:30,640 --> 00:52:34,990 >> Donc, quelque chose que nous allons également toucher sur un bit est l'idée de l'arithmétique de pointeur. 1133 00:52:34,990 --> 00:52:38,180 Qui, tout ce qu'il est, est plutôt que de réglage 1134 00:52:38,180 --> 00:52:42,610 les valeurs de ce qui est stocké à l'adresse de votre pointeur, 1135 00:52:42,610 --> 00:52:45,030 il est juste fait changer l'adresse elle-même. 1136 00:52:45,030 --> 00:52:49,420 Donc, si vous vouliez que l'humain d'ajuster votre pointeur manuellement, 1137 00:52:49,420 --> 00:52:52,700 la façon dont vous feriez qui est juste faire n fois la taille du pointeur. 1138 00:52:52,700 --> 00:52:53,240 Droit? 1139 00:52:53,240 --> 00:52:54,810 >> Donc, un int. 1140 00:52:54,810 --> 00:52:58,580 Un int-- combien d'octets dans la mémoire est un int? 1141 00:52:58,580 --> 00:52:59,640 Il est quatre, non? 1142 00:52:59,640 --> 00:53:03,520 Donc, si je sais que je dois un tableau de tous ints et je veux qu'il pointe vers une 1143 00:53:03,520 --> 00:53:08,470 après, je sais que je dois juste déplacer mon pointeur vers le bas de quatre octets, non? 1144 00:53:08,470 --> 00:53:12,440 Et ainsi n fois la taille des octets de pointeur 1145 00:53:12,440 --> 00:53:15,890 est cependant le nombre d'octets que vous êtes juste va déplacer votre pointeur vers le bas par. 1146 00:53:15,890 --> 00:53:20,350 >> Ainsi, par exemple, si on a un tableau de ints, le premier, disons simplement, 1147 00:53:20,350 --> 00:53:22,280 est mémorisée en tant que 0x00. 1148 00:53:22,280 --> 00:53:26,150 Vous savez le prochain va être au 0x04 parce qui est quatre octets plus tard. 1149 00:53:26,150 --> 00:53:31,030 Et celle d'après ça va être 0x08 et ainsi de suite et ainsi de suite. 1150 00:53:31,030 --> 00:53:33,830 Et donc, les gars, jetez un oeil. 1151 00:53:33,830 --> 00:53:36,640 >> Tout ce que vous faites ici est que vous avez un pointeur y 1152 00:53:36,640 --> 00:53:43,700 et vous ajoutez cela à votre mémoire de sorte que vous pouvez déplacer vers le bas 1153 00:53:43,700 --> 00:53:45,559 les blocs de mémoire allouée. 1154 00:53:45,559 --> 00:53:46,850 Une sorte de concept de niveau supérieur. 1155 00:53:46,850 --> 00:53:48,820 Les gars, vous aurez pas besoin savoir pour cette semaine, 1156 00:53:48,820 --> 00:53:51,290 mais qui est tout ce qu'il a fait là-bas. 1157 00:53:51,290 --> 00:53:55,190 1158 00:53:55,190 --> 00:53:55,900 D'ACCORD. 1159 00:53:55,900 --> 00:53:56,710 >> Un autre temps de plaisanterie. 1160 00:53:56,710 --> 00:54:01,360 1161 00:54:01,360 --> 00:54:02,780 Deux chaînes de marche dans un bar. 1162 00:54:02,780 --> 00:54:05,713 On dit, je voudrais un rhum et les valeurs d'ordures à coke. 1163 00:54:05,713 --> 00:54:08,796 L'autre dit, vous aurez à excuser mon ami, il ne null résilié. 1164 00:54:08,796 --> 00:54:10,390 Les gars, vous l'obtenez. 1165 00:54:10,390 --> 00:54:10,890 Pardon. 1166 00:54:10,890 --> 00:54:13,490 Voilà comment je me tiens aller quand je PrEP pour la section 1167 00:54:13,490 --> 00:54:15,650 est que je insérer un couple de diapositives de plaisanterie. 1168 00:54:15,650 --> 00:54:16,150 Quoi qu'il en soit. 1169 00:54:16,150 --> 00:54:21,460 1170 00:54:21,460 --> 00:54:21,960 D'ACCORD. 1171 00:54:21,960 --> 00:54:24,290 Avant de passer on-- donc, essentiellement, nous avons 1172 00:54:24,290 --> 00:54:30,600 couvert toutes les conceptuelle les questions liées à des pointeurs. 1173 00:54:30,600 --> 00:54:34,090 Et puis nous allons talk-- mobile De plus, pourquoi parler de ce qui est important 1174 00:54:34,090 --> 00:54:37,810 et comment qui correspond dans le idée de gestion de la mémoire. 1175 00:54:37,810 --> 00:54:39,810 Mais avant que je passe, Quelqu'un at-il des questions 1176 00:54:39,810 --> 00:54:43,880 à propos de l'utilisation du pointeur, ce qui se passe lorsque vous créez des pointeurs, 1177 00:54:43,880 --> 00:54:47,540 comment sont chacun le référencement d'autre part, comment sont-ils déréférencement? 1178 00:54:47,540 --> 00:54:51,760 Une question sur avant que je passe sur? 1179 00:54:51,760 --> 00:54:53,060 D'ACCORD. 1180 00:54:53,060 --> 00:54:54,770 Génial. 1181 00:54:54,770 --> 00:54:58,170 >> Cela nous amène dans cette plus grande notion de niveau supérieur 1182 00:54:58,170 --> 00:55:00,310 de gestion de la mémoire dans son ensemble. 1183 00:55:00,310 --> 00:55:02,720 Donc, essentiellement, dans votre ordinateur, il est 1184 00:55:02,720 --> 00:55:06,300 deux types de base de mémoire ou régions dans lesquelles la mémoire sont stockées. 1185 00:55:06,300 --> 00:55:10,210 Vous avez ici ce qu'on appelle le tas et vous avez ici 1186 00:55:10,210 --> 00:55:11,550 ce qu'on appelle la pile. 1187 00:55:11,550 --> 00:55:13,966 Et nous allons parler la pile d'abord parce qu'il est 1188 00:55:13,966 --> 00:55:16,910 l'une plus que vous finagley avoir au type de conceptuellement 1189 00:55:16,910 --> 00:55:18,570 comprendre ce qui se passe. 1190 00:55:18,570 --> 00:55:23,930 >> Donc tout ce que la pile est-- penser comme une pile de mémoire physique 1191 00:55:23,930 --> 00:55:28,880 où vous avez un bloc de mémoire qui est mis de côté pour votre programme 1192 00:55:28,880 --> 00:55:30,180 pendant son exécution. 1193 00:55:30,180 --> 00:55:34,480 Et cela est le cas, essentiellement, tous les de vos variables locales sont stockées. 1194 00:55:34,480 --> 00:55:38,300 Donc, ceci est juste un zoom dans l'image de cette pile. 1195 00:55:38,300 --> 00:55:41,060 La pile, là-bas, je suis juste un zoom un peu plus. 1196 00:55:41,060 --> 00:55:46,170 >> Donc, essentiellement, dans une pile vous avez un tas de fonction dans votre programme. 1197 00:55:46,170 --> 00:55:48,250 Donc, nous allons simplement revenir deux semaines à l'exemple 1198 00:55:48,250 --> 00:55:51,450 où nous avions notre fonction principale ainsi que d'une fonction de cube 1199 00:55:51,450 --> 00:55:56,410 où nous avons essayé de créer une fonction qui cubed-- qui a eu paramètres en entrée, 1200 00:55:56,410 --> 00:55:59,110 cubes eux et retourné les ramener à principal. 1201 00:55:59,110 --> 00:56:02,459 Ainsi, la manière que cela est stocké dans la mémoire est ce que vous avez votre fonction principale 1202 00:56:02,459 --> 00:56:03,250 ici en bas. 1203 00:56:03,250 --> 00:56:06,630 Et puis avec chaque fonction supplémentaire, que vous appelez et ajoutez en plus de cela, 1204 00:56:06,630 --> 00:56:07,960 la mémoire empile juste au-dessus. 1205 00:56:07,960 --> 00:56:10,190 Pensez-y comme une pile physique. 1206 00:56:10,190 --> 00:56:13,570 >> Et si vous avez de vous tous principale variables de vos principales fonctions, 1207 00:56:13,570 --> 00:56:15,260 tout ce qui se passe ici, stocké. 1208 00:56:15,260 --> 00:56:17,440 Et puis quand vous avez appelé cube, il va et il 1209 00:56:17,440 --> 00:56:20,810 crée des copies de tous ceux paramètres et il les stocke 1210 00:56:20,810 --> 00:56:23,010 ci-dessus dans un endroit différent. 1211 00:56:23,010 --> 00:56:24,280 Et alors pourquoi nous intéressons-nous? 1212 00:56:24,280 --> 00:56:29,220 La raison nous nous soucions est que nous ne pouvons pas simplement Utilisez les paramètres ici-- les variables 1213 00:56:29,220 --> 00:56:33,080 ici-- et nous les changer, nous prévoyons leur également être modifiés ici, non? 1214 00:56:33,080 --> 00:56:35,910 >> L'idée est qu'ils sont sauvés à différents endroits dans la mémoire 1215 00:56:35,910 --> 00:56:40,540 de sorte que, lorsque vous accédez à différents fonctions, ce que vous pensez qu'il se passe 1216 00:56:40,540 --> 00:56:45,520 est pas passe réellement parce que le bits de mémoire ne sont pas interconnectés. 1217 00:56:45,520 --> 00:56:50,530 Et donc la question qui est vraiment important pour nous de sorte de comprendre 1218 00:56:50,530 --> 00:56:54,100 est, si, lorsque nous manquons un programme, la taille d'une fonction 1219 00:56:54,100 --> 00:56:57,159 empiler frame-- si physiquement, comment quantité de mémoire faut-il lui donner? 1220 00:56:57,159 --> 00:56:59,950 Peut-être qu'il est une fonction géant afin que nous avoir pour lui donner autant de mémoire. 1221 00:56:59,950 --> 00:57:02,230 Mais si elle était plus petite que nous avions besoin d'un petit peu. 1222 00:57:02,230 --> 00:57:05,980 >> Donc, l'idée est que, lorsque nous manquons un programme de la taille de cette fonction 1223 00:57:05,980 --> 00:57:09,100 dépend de combien variables et le type de variables 1224 00:57:09,100 --> 00:57:10,940 que nous voulons lui donner. 1225 00:57:10,940 --> 00:57:13,910 Mais que faire si le nombre de variables-- et leurs tailles, 1226 00:57:13,910 --> 00:57:16,140 qui est déterminé pas par vous, mais le codeur 1227 00:57:16,140 --> 00:57:20,580 est déterminée par le réelle utilisateur de votre programme. 1228 00:57:20,580 --> 00:57:24,240 Donc, si je voulais créer une fonction qui a eu cordes de l'utilisateur, 1229 00:57:24,240 --> 00:57:27,630 mais je ne sais pas vraiment comment grande ces chaînes sont, il est difficile pour moi 1230 00:57:27,630 --> 00:57:30,220 d'attribuer spécifique quantité de mémoire nécessaire. 1231 00:57:30,220 --> 00:57:30,920 Droit? 1232 00:57:30,920 --> 00:57:35,234 >> Parce que si ce function-- si cet utilisateur saisit une chaîne géante, 1233 00:57:35,234 --> 00:57:37,650 il va créer une erreur de ce qu'on appelle essentiellement 1234 00:57:37,650 --> 00:57:42,190 Stack Overflow où vous allez au-delà du limites de la mémoire que vous avez. 1235 00:57:42,190 --> 00:57:44,250 Et alors que faisons-nous? 1236 00:57:44,250 --> 00:57:47,290 Si nous ne pouvons pas simplement créer ce géant pile qui peut tout sauver, 1237 00:57:47,290 --> 00:57:50,260 que faisons-nous pour résoudre ce problème? 1238 00:57:50,260 --> 00:57:54,364 >> Donc, nous allons passer à autre chose et de parler sur ce deuxième type de mémoire 1239 00:57:54,364 --> 00:57:56,780 et ensuite nous pourrons parler de la façon nous pouvons utiliser les deux ensemble 1240 00:57:56,780 --> 00:57:58,550 pour résoudre cette question. 1241 00:57:58,550 --> 00:58:01,024 Alors maintenant, nous allons monter dans une autre partie de la mémoire 1242 00:58:01,024 --> 00:58:01,690 dans notre ordinateur. 1243 00:58:01,690 --> 00:58:03,215 On appelle cela le tas. 1244 00:58:03,215 --> 00:58:07,150 Donc, tout le tas est une piscine de mémoire disponible que 1245 00:58:07,150 --> 00:58:08,690 peut être allouée dynamiquement. 1246 00:58:08,690 --> 00:58:12,420 Donc, cela peut changer tout votre programme est en marche. 1247 00:58:12,420 --> 00:58:15,160 >> Et donc une région de mémoire inutilisée qui peut 1248 00:58:15,160 --> 00:58:18,200 être allowed-- qui peut être alloué à la fonction 1249 00:58:18,200 --> 00:58:20,490 appelé malloc, ou l'allocation de mémoire. 1250 00:58:20,490 --> 00:58:23,110 Donc, essentiellement, lorsque vous exécutez un programme, 1251 00:58:23,110 --> 00:58:29,560 vous pouvez créer dynamiquement la mémoire de le tas et à utiliser que tout ici-bas. 1252 00:58:29,560 --> 00:58:34,280 Et alors, l'ensemble de vos fonctions ici peut accéder le tas. 1253 00:58:34,280 --> 00:58:37,960 >> Et ainsi de malloc, cette idée que David sorte de rapidement, brièvement passé sous silence 1254 00:58:37,960 --> 00:58:41,570 en lecture, est juste un moyen pour vous permet de contrôler votre mémoire. 1255 00:58:41,570 --> 00:58:45,470 Comme, quand vous êtes juste la création empiler fonctions, lorsque vous êtes 1256 00:58:45,470 --> 00:58:48,290 avoir votre fonction principale avec vos fonctions aléatoires, 1257 00:58:48,290 --> 00:58:52,270 vous pensez d'eux comme des enfants qui vient se sont enfuis quand vous aviez fini avec eux. 1258 00:58:52,270 --> 00:58:53,690 Ils étaient vraiment mauvais enfants. 1259 00:58:53,690 --> 00:58:55,515 Vous les avez, vous créez leur enseigner quelque chose, 1260 00:58:55,515 --> 00:58:57,640 et puis quand vous voulez accéder à nouveau qu'ils sont 1261 00:58:57,640 --> 00:58:59,850 pas là parce que votre mémoire juste couru loin. 1262 00:58:59,850 --> 00:59:04,140 >> Mais malloc, ou le tas, est un moyen d'avoir de meilleurs enfants, où 1263 00:59:04,140 --> 00:59:07,090 vous pouvez créer des types de eux, leur assignent des valeurs, 1264 00:59:07,090 --> 00:59:11,080 utiliser eux-- qui sonnait vraiment bad-- les utiliser mais que vous vouliez, 1265 00:59:11,080 --> 00:59:14,002 mais alors en mesure de contrôler eux et puis libérer de la mémoire 1266 00:59:14,002 --> 00:59:14,960 chaque fois que vous en avez besoin. 1267 00:59:14,960 --> 00:59:18,085 Alors, lorsque vous avez terminé avec votre fonction, les enfants reviennent de vous 1268 00:59:18,085 --> 00:59:20,290 et vous avez encore que les données là. 1269 00:59:20,290 --> 00:59:25,690 >> Ainsi, la manière que nous malloc, ou de créer, la mémoire est par l'étoile fonction void 1270 00:59:25,690 --> 00:59:26,790 taille de malloc en octets. 1271 00:59:26,790 --> 00:59:29,730 Voilà donc tout le prototype la raison pour laquelle nous faisons cela. 1272 00:59:29,730 --> 00:59:35,800 Donc, un exemple est que nous créons un pointeur de taper int-- les égaux de int étoiles 1273 00:59:35,800 --> 00:59:38,120 taille de malloc de int. 1274 00:59:38,120 --> 00:59:41,734 Donc la raison pour laquelle nous faisons taille des et pas seulement un number-- 1275 00:59:41,734 --> 00:59:43,650 parce que nous savons tous que un int est de quatre octets, 1276 00:59:43,650 --> 00:59:48,310 droite- mais un int est seulement quatre octets sur certains systèmes d'exploitation. 1277 00:59:48,310 --> 00:59:50,410 >> L'idée pour nous programmeurs est que nous 1278 00:59:50,410 --> 00:59:53,160 vouloir créer un code qui peut fonctionner sur tous les ordinateurs, pas seulement 1279 00:59:53,160 --> 00:59:54,860 nos ordinateurs simples. 1280 00:59:54,860 --> 00:59:58,350 Et voilà pourquoi nous aimons utiliser taille de et pas seulement le nombre de quatre. 1281 00:59:58,350 --> 00:59:59,970 Cela fait-il sens pour tout le monde? 1282 00:59:59,970 --> 01:00:03,930 Donc la taille de-- tout, il est un C que la fonction ou de l'exploitant 1283 01:00:03,930 --> 01:00:09,350 vous indique combien d'octets de mémoire fait un certain type de variable prendre place. 1284 01:00:09,350 --> 01:00:11,150 Donc dans ce cas, la taille d'un int est de quatre. 1285 01:00:11,150 --> 01:00:12,090 Quatre octets. 1286 01:00:12,090 --> 01:00:15,490 Et malloc va libérer jusqu'à quatre octets dans votre tas, 1287 01:00:15,490 --> 01:00:18,790 alors vous pouvez ensuite utiliser dans votre principale fonction d'être capable de stocker la mémoire. 1288 01:00:18,790 --> 01:00:22,460 1289 01:00:22,460 --> 01:00:24,860 Tout le monde est clair sur ce point à ce jour? 1290 01:00:24,860 --> 01:00:25,918 Ouais? 1291 01:00:25,918 --> 01:00:28,122 >> AUDIENCE: Je suis clair, mais juste pour être sur clear-- 1292 01:00:28,122 --> 01:00:28,705 ANDI PENG: OK. 1293 01:00:28,705 --> 01:00:29,246 Tout à fait bien. 1294 01:00:29,246 --> 01:00:32,176 AUDIENCE: --size d'est [inaudible] peut effectivement [inaudible] 1295 01:00:32,176 --> 01:00:34,384 et il va vraiment faire la chose que nous voulons. 1296 01:00:34,384 --> 01:00:35,380 Il est pas un pseudo. 1297 01:00:35,380 --> 01:00:35,878 >> PENG ANDI: Non 1298 01:00:35,878 --> 01:00:36,874 >> PUBLIC: Il est comme un véritable chose-- 1299 01:00:36,874 --> 01:00:37,372 >> ANDI Peng: Ceci est du code réel. 1300 01:00:37,372 --> 01:00:38,455 >> AUDIENCE: -Nous peut l'utiliser. 1301 01:00:38,455 --> 01:00:39,862 Il est courant. 1302 01:00:39,862 --> 01:00:40,418 Frais. 1303 01:00:40,418 --> 01:00:41,751 ANDI PENG: Taille de vient avec C. 1304 01:00:41,751 --> 01:00:43,475 AUDIENCE: qui rend ma vie plus heureuse. 1305 01:00:43,475 --> 01:00:45,550 ANDI PENG: Ouais. 1306 01:00:45,550 --> 01:00:48,610 Donc, si vous êtes un programmeur paresseux comme je suis genre de parfois, 1307 01:00:48,610 --> 01:00:50,402 Je ne l'aime pas mémoriser ce que la taille d'un int 1308 01:00:50,402 --> 01:00:52,734 est, je ne l'aime pas mémoriser avec la taille d'un flotteur est. 1309 01:00:52,734 --> 01:00:55,160 Taille de simplement vous dit ce il est et qui est beaucoup plus facile. 1310 01:00:55,160 --> 01:00:59,880 1311 01:00:59,880 --> 01:01:00,440 >> Bien. 1312 01:01:00,440 --> 01:01:02,160 Donc, une chose importante que vous les gars veulent tous 1313 01:01:02,160 --> 01:01:04,620 garder à l'esprit lorsque vous êtes avec malloc est que vous avez toujours 1314 01:01:04,620 --> 01:01:06,400 avoir à vérifier pour voir si elle est nulle. 1315 01:01:06,400 --> 01:01:08,630 Donc, comme je l'ai dit, de retour à cette image de l'amas. 1316 01:01:08,630 --> 01:01:11,390 Le tas est juste ce géant pile de la mémoire que vous avez. 1317 01:01:11,390 --> 01:01:16,740 Et vous voulez être en mesure de prendre des morceaux de la mémoire de celui-ci et l'utiliser, non? 1318 01:01:16,740 --> 01:01:19,750 >> Mais que faire si vous avez pas plus de mémoire dans ce tas? 1319 01:01:19,750 --> 01:01:23,650 Que faire si je l'ai déjà utilisé tout de celui-ci et je cherche à malloc plus? 1320 01:01:23,650 --> 01:01:24,864 Cela ne existe pas. 1321 01:01:24,864 --> 01:01:26,780 Eh bien, voilà pourquoi vous êtes allez obtenir une erreur. 1322 01:01:26,780 --> 01:01:29,220 Vous allez SEG faute. Vous allez d'avoir une erreur de segmentation où vous 1323 01:01:29,220 --> 01:01:30,940 essayez d'accéder à des choses qui ne sont pas là. 1324 01:01:30,940 --> 01:01:33,180 Et la façon dont nous faisons et que la façon dont nous 1325 01:01:33,180 --> 01:01:36,120 éviter est que nous vérifions pour voir si nulle du pointeur. 1326 01:01:36,120 --> 01:01:41,650 >> Donc, si je devais quelque chose de malloc et je devais pas plus de mémoire, 1327 01:01:41,650 --> 01:01:45,501 ce serait une erreur imprimer parce que le pointeur retourné est juste nulle. 1328 01:01:45,501 --> 01:01:47,750 Et la façon dont nous faisons this-- cette conception est tout simplement génial, 1329 01:01:47,750 --> 01:01:52,140 simplement mémoriser this-- est que toute fois que vous essayez quoi que ce soit à malloc, 1330 01:01:52,140 --> 01:01:55,300 vous allez avoir besoin de vérifier pour voir si elle est nulle. 1331 01:01:55,300 --> 01:01:58,257 Parce que chaque fois que vous essayez de obtenir la mémoire du tas, 1332 01:01:58,257 --> 01:02:00,340 vous avez toujours à faire vous que vous avez la mémoire. 1333 01:02:00,340 --> 01:02:01,350 Voilà tout ce qu'il est. 1334 01:02:01,350 --> 01:02:04,980 >> Donc à peu près ces trois de lignes de code, mémoriser. 1335 01:02:04,980 --> 01:02:06,830 Chaque fois que vous malloc, plop eux. 1336 01:02:06,830 --> 01:02:08,190 Vous allez avoir besoin d'eux. 1337 01:02:08,190 --> 01:02:10,540 Parce que je vous le garantis, nous allons pour vous tester sur une affaire et votre ordinateur 1338 01:02:10,540 --> 01:02:13,498 va exploser parce que vous êtes va essayer de l'accès mémoire qui est 1339 01:02:13,498 --> 01:02:16,680 pas là et les choses vont accident et il ne va pas être bon. 1340 01:02:16,680 --> 01:02:19,290 Il suffit donc de percer que dans votre cerveau. 1341 01:02:19,290 --> 01:02:21,370 Malloc, null. 1342 01:02:21,370 --> 01:02:22,360 Bien. 1343 01:02:22,360 --> 01:02:22,860 Bien. 1344 01:02:22,860 --> 01:02:26,280 1345 01:02:26,280 --> 01:02:28,340 >> Alors ce engendre le question de ce qui se passe 1346 01:02:28,340 --> 01:02:30,550 après que nous avons terminé en utilisant cette mémoire. 1347 01:02:30,550 --> 01:02:32,390 Parce que l'idée d'avoir été malloc 1348 01:02:32,390 --> 01:02:36,460 que nous avons ce tas que nous pouvons prendre mémoire à partir, puis nous pouvons l'utiliser. 1349 01:02:36,460 --> 01:02:37,220 Droit? 1350 01:02:37,220 --> 01:02:40,550 Et puis ce que nous devons nous rappeler est que, après que nous aurons fini avec elle, 1351 01:02:40,550 --> 01:02:41,900 nous pouvons alors libérer. 1352 01:02:41,900 --> 01:02:42,400 Laisser aller. 1353 01:02:42,400 --> 01:02:43,979 Nous pouvons le laisser aller. 1354 01:02:43,979 --> 01:02:47,020 Ou bien vous allez aussi à fuir mémoire et plus de mauvaises choses vont se passer. 1355 01:02:47,020 --> 01:02:49,010 >> Essentiellement, chaque fois que vous êtes la mémoire de toucher, 1356 01:02:49,010 --> 01:02:51,800 mauvaises choses qui se passera si vous ne pas faire les choses correctement. 1357 01:02:51,800 --> 01:02:55,150 Vous devez donc vérifier, d'abord, si vous avez la mémoire disponible. 1358 01:02:55,150 --> 01:02:58,700 Et puis après vous avez terminé, vous voulez libérer et permettre à votre système d'exploitation 1359 01:02:58,700 --> 01:03:00,690 de le reprendre. 1360 01:03:00,690 --> 01:03:04,870 Donc, la façon dont nous faisons est juste que fonction, sans vide, et le pointeur 1361 01:03:04,870 --> 01:03:06,370 à ce tas de mémoire. 1362 01:03:06,370 --> 01:03:08,680 >> Ainsi, l'exemple est pointeur libre. 1363 01:03:08,680 --> 01:03:11,580 Il est assez facile, simple, ne veulent pas de l'oublier. 1364 01:03:11,580 --> 01:03:14,687 Afin de vérifier pour voir si elle est nulle, gratuitement. 1365 01:03:14,687 --> 01:03:15,270 Tout le monde la bonne? 1366 01:03:15,270 --> 01:03:22,660 1367 01:03:22,660 --> 01:03:27,325 Donc encore une fois, le code que vous les gars peut prendre sorte de rapidement un coup d'œil sur. 1368 01:03:27,325 --> 01:03:34,964 1369 01:03:34,964 --> 01:03:37,880 Je sais qu'il ya beaucoup de nouvelle syntaxe et tout va bien, si vous êtes comme, ah, 1370 01:03:37,880 --> 01:03:38,963 ça veut dire quoi encore? 1371 01:03:38,963 --> 01:03:40,250 Pas de soucis. 1372 01:03:40,250 --> 01:03:46,785 Tout cela était censé être est l'affichage une action, comment toutes ces choses 1373 01:03:46,785 --> 01:03:47,660 peuvent être utilisés ensemble. 1374 01:03:47,660 --> 01:03:52,190 1375 01:03:52,190 --> 01:03:54,190 Donc, ce qui est mis ensemble comme une bande du passé 1376 01:03:54,190 --> 01:03:56,532 diapositives nous sommes allés grâce en un seul programme. 1377 01:03:56,532 --> 01:03:58,240 Public: D'une certaine façon que l'on peut actually-- 1378 01:03:58,240 --> 01:03:59,570 ANDI PENG: D'une manière qui nous pouvons réellement utiliser. 1379 01:03:59,570 --> 01:04:02,379 Vous pouvez plop que dans votre ID, vous pouvez l'exécuter et il pourrait fonctionner. 1380 01:04:02,379 --> 01:04:02,920 AUDIENCE: OK. 1381 01:04:02,920 --> 01:04:04,140 Voilà donc réel? 1382 01:04:04,140 --> 01:04:05,580 >> ANDI Peng: Cela est vrai. 1383 01:04:05,580 --> 01:04:06,430 Ouais. 1384 01:04:06,430 --> 01:04:08,690 Je tente de faire de sorte que le les polices sont différentes de sorte 1385 01:04:08,690 --> 01:04:11,770 que chaque fois que je tape réel le code de la police est le code de la police 1386 01:04:11,770 --> 01:04:15,471 et que mon code de note est différente, mais Je ne sais pas si cela fonctionne réellement. 1387 01:04:15,471 --> 01:04:16,012 AUDIENCE: Non 1388 01:04:16,012 --> 01:04:17,190 Je pense que-- 1389 01:04:17,190 --> 01:04:18,213 >> ANDI PENG: OK. 1390 01:04:18,213 --> 01:04:20,578 >> AUDIENCE: --sometimes [Inaudible] et je suis 1391 01:04:20,578 --> 01:04:23,416 comme, ce serait vraiment mignon si elle était en fait une chose utile 1392 01:04:23,416 --> 01:04:24,812 mais alors il est pas une chose utilisable. 1393 01:04:24,812 --> 01:04:26,270 Je veux que ce soit une chose utilisable. 1394 01:04:26,270 --> 01:04:27,010 >> ANDI PENG: OK. 1395 01:04:27,010 --> 01:04:27,510 Ouais. 1396 01:04:27,510 --> 01:04:28,430 Je vais passer ce long. 1397 01:04:28,430 --> 01:04:33,266 Soyez comme, David, les enfants sont vraiment triste quand vous écrivez faux code. 1398 01:04:33,266 --> 01:04:34,240 Bien. 1399 01:04:34,240 --> 01:04:34,740 Ouais? 1400 01:04:34,740 --> 01:04:37,686 >> Auditoire: Alors les ptr ici est pas réellement un pointeur, 1401 01:04:37,686 --> 01:04:41,130 il est un bloc de mémoire? 1402 01:04:41,130 --> 01:04:45,130 >> ANDI PENG: Alors parlez-vous la première ligne ou de l'un vers le bas ici? 1403 01:04:45,130 --> 01:04:48,170 Parlez-vous celui-là? 1404 01:04:48,170 --> 01:04:50,910 >> AUDIENCE: Le PTR est des choses différentes in-- 1405 01:04:50,910 --> 01:04:53,230 >> ANDI PENG: Eh bien, ici ce que je doing-- effectivement, 1406 01:04:53,230 --> 01:04:54,660 disons simplement passer par ici. 1407 01:04:54,660 --> 01:04:57,120 Ce genre de liens dans bien tous les concepts. 1408 01:04:57,120 --> 01:05:01,840 Nous avons donc ici ptr int étoiles. 1409 01:05:01,840 --> 01:05:04,160 Donc int pointeur, qui est là nous sommes en train création 1410 01:05:04,160 --> 01:05:06,550 un pointeur qui pointe vers un entier. 1411 01:05:06,550 --> 01:05:08,230 Eh bien, il va pointer vers un entier. 1412 01:05:08,230 --> 01:05:12,135 Et nous allons à malloc, ou donner, assez de mémoire allouée 1413 01:05:12,135 --> 01:05:13,200 pour stocker un nombre entier. 1414 01:05:13,200 --> 01:05:14,910 Donc quatre octets dans ce cas. 1415 01:05:14,910 --> 01:05:18,024 >> Et puis, si cela est égal à égal null-- Equals null-- nous allons imprimer. 1416 01:05:18,024 --> 01:05:20,440 Oh, vous avez une erreur car vous êtes hors de la mémoire, non? 1417 01:05:20,440 --> 01:05:22,814 Sinon celui du scrutin, qui raconte simplement votre programme 1418 01:05:22,814 --> 01:05:24,170 que vous avez une erreur. 1419 01:05:24,170 --> 01:05:26,850 Et puis, si vous le faites avoir cette mémoire, il est 1420 01:05:26,850 --> 01:05:33,230 va stocker tout ce qui se int vous donne dans l'emplacement 1421 01:05:33,230 --> 01:05:35,460 et le définir comme la valeur du pointeur. 1422 01:05:35,460 --> 01:05:38,500 Donc, il va vraiment effacer physiquement cette valeur 1423 01:05:38,500 --> 01:05:41,702 et mettre ce que obtenir des rendements int. 1424 01:05:41,702 --> 01:05:43,910 Et puis vous allez Imprimer ce qu'ils sont entrés. 1425 01:05:43,910 --> 01:05:46,080 >> Public: Et qui est va être dans le tas? 1426 01:05:46,080 --> 01:05:47,060 >> ANDI Peng: Cela va comme dans le tas. 1427 01:05:47,060 --> 01:05:48,768 >> Public: Et pour que sera accessible. 1428 01:05:48,768 --> 01:05:51,220 ANDI PENG: Exactement. 1429 01:05:51,220 --> 01:05:52,600 Agréable. 1430 01:05:52,600 --> 01:05:53,756 Bien. 1431 01:05:53,756 --> 01:05:59,289 >> Auditoire: Alors, quand nous libérons ptr à ce dernière étape, nous libérons le pointeur 1432 01:05:59,289 --> 01:06:00,724 ou nous libérer le bloc? 1433 01:06:00,724 --> 01:06:01,390 ANDI PENG: Ouais. 1434 01:06:01,390 --> 01:06:05,570 Donc, nous libérant le pointer-- ainsi, libérer le bloc de mémoire. 1435 01:06:05,570 --> 01:06:08,780 Donc, la seule façon dont nous pouvons même l'accès la mémoire est en ayant le pointeur. 1436 01:06:08,780 --> 01:06:10,730 Si vous ne possédez pas le pointeur, vous êtes comme, oh, je ne sais pas où il est, 1437 01:06:10,730 --> 01:06:11,290 droit? 1438 01:06:11,290 --> 01:06:13,956 Donc, si vous libérez, vous êtes essentiellement libérant ce que tout le bloc. 1439 01:06:13,956 --> 01:06:16,500 Ensuite, votre ordinateur sait, oh, il n'y a rien utilisables ici, 1440 01:06:16,500 --> 01:06:19,396 Je peux juste mettre les ordures les valeurs de retour en elle à nouveau. 1441 01:06:19,396 --> 01:06:21,590 >> Auditoire: Alors entiers existent à ce sujet? 1442 01:06:21,590 --> 01:06:23,481 >> ANDI PENG: existent-ils entiers? 1443 01:06:23,481 --> 01:06:23,980 Pardon. 1444 01:06:23,980 --> 01:06:25,271 Pouvez-vous reformuler votre question? 1445 01:06:25,271 --> 01:06:28,330 AUDIENCE: Je voulais dire, après que vous libérez le pointeur, le nombre entier que vous obtenez, 1446 01:06:28,330 --> 01:06:29,990 aura qui existent encore? 1447 01:06:29,990 --> 01:06:31,360 >> PENG ANDI: Non, il ne sera pas. 1448 01:06:31,360 --> 01:06:34,070 1449 01:06:34,070 --> 01:06:37,550 Ou du moins, il va exister dans votre mémoire avant de votre ordinateur ne 1450 01:06:37,550 --> 01:06:40,231 que ce soit avec elle, mais il ya aucun moyen pour vous d'obtenir cela. 1451 01:06:40,231 --> 01:06:41,480 Parce que vous avez libéré le pointeur. 1452 01:06:41,480 --> 01:06:43,150 Vous ne savez pas où il est plus. 1453 01:06:43,150 --> 01:06:43,650 Ouais. 1454 01:06:43,650 --> 01:06:46,500 1455 01:06:46,500 --> 01:06:48,560 >> Je vais passer ici. 1456 01:06:48,560 --> 01:06:49,060 Ouf. 1457 01:06:49,060 --> 01:06:53,012 Donc, nous sommes à travers beaucoup de conceptuel difficultés de gestion de la mémoire 1458 01:06:53,012 --> 01:06:54,720 et nous allons juste passer essentiellement 1459 01:06:54,720 --> 01:06:57,090 5, 10 minutes aller sur les choses de syntaxe 1460 01:06:57,090 --> 01:07:03,240 seront utilisables et utiles pour vous les gars, mais rien de trop conceptuel là-bas. 1461 01:07:03,240 --> 01:07:03,740 D'ACCORD. 1462 01:07:03,740 --> 01:07:06,930 >> Donc, nous sommes complètement changer de vitesse ici. 1463 01:07:06,930 --> 01:07:09,360 Gestion de la mémoire, difficile. Pointeurs, difficile. Oui. 1464 01:07:09,360 --> 01:07:10,530 Il est vraiment, vraiment dur. 1465 01:07:10,530 --> 01:07:11,270 Tout à fait bien. 1466 01:07:11,270 --> 01:07:13,800 Voilà pourquoi votre pièce est va être vraiment difficile. 1467 01:07:13,800 --> 01:07:17,740 Mais si vous allez faire les choses que nous sommes 1468 01:07:17,740 --> 01:07:19,860 censé faire, assurez- sûr que les choses sont nulles, 1469 01:07:19,860 --> 01:07:21,830 assurez-vous de vérifier si les choses sont null, assurez-vous de libérer de la mémoire, 1470 01:07:21,830 --> 01:07:23,910 assurez-vous que les choses ne sont pas fuite, vous serez bon. 1471 01:07:23,910 --> 01:07:25,761 Vous serez mis. 1472 01:07:25,761 --> 01:07:26,260 Bien. 1473 01:07:26,260 --> 01:07:30,870 Nous allons donc à se déplacer dans cette tout nouveau concept de redirection. 1474 01:07:30,870 --> 01:07:33,201 Et donc avant aujourd'hui, le principal moyen que nous avons 1475 01:07:33,201 --> 01:07:35,700 été en interaction avec notre programmes est de l'entrée standard 1476 01:07:35,700 --> 01:07:36,533 et la sortie standard. 1477 01:07:36,533 --> 01:07:37,040 Droit? 1478 01:07:37,040 --> 01:07:39,230 En tant que l'entrée utilisateur choses et l'ordinateur 1479 01:07:39,230 --> 01:07:42,090 crache de nouveau à nous dans le terminal. 1480 01:07:42,090 --> 01:07:44,770 >> Mais il existe d'autres façons pour nous de interagissons 1481 01:07:44,770 --> 01:07:47,810 avec l'ordinateur avec notre des programmes qui ne sont pas juste moi 1482 01:07:47,810 --> 01:07:50,245 choses frappe physiquement quand je suis invité. 1483 01:07:50,245 --> 01:07:52,620 Et la façon dont nous faisons cela est à travers la carotte supérieure 1484 01:07:52,620 --> 01:07:53,453 et le symbole de la conduite. 1485 01:07:53,453 --> 01:07:55,970 1486 01:07:55,970 --> 01:07:58,630 Ainsi, nous pouvons également lire et écrire dans des fichiers en utilisant cela. 1487 01:07:58,630 --> 01:08:03,230 >> Ainsi, la manière que nous le faisons est le supérieure à la carotte, tout ce qui est en train de faire 1488 01:08:03,230 --> 01:08:07,410 est écrit quel que soit votre fichier a un fichier séparé. 1489 01:08:07,410 --> 01:08:11,870 Ainsi, par exemple, si je voulu courir Bonjour tout le monde 1490 01:08:11,870 --> 01:08:14,330 et je voulais la sortie être sauvé dans un autre fichier 1491 01:08:14,330 --> 01:08:17,359 et pas seulement imprimé à moi, je peut juste faire plus de carotte, 1492 01:08:17,359 --> 01:08:18,410 output.txt. 1493 01:08:18,410 --> 01:08:22,609 Donc tout ce qui est à faire est de prendre mon programme de hello.world, 1494 01:08:22,609 --> 01:08:26,359 et quelle que soit la sortie est, il est sauver dans un fichier appelé output.txt. 1495 01:08:26,359 --> 01:08:29,850 Ainsi, la manière que David a fait le .csv avec les noms des étudiants, 1496 01:08:29,850 --> 01:08:32,310 il est le même que vous les gars peuvent faire. 1497 01:08:32,310 --> 01:08:35,137 >> Et ce qui est particulièrement utiles ici sont les plus 1498 01:08:35,137 --> 01:08:38,220 than-- la carotte supérieure à deux signes que vous pouvez ajouter à une sortie 1499 01:08:38,220 --> 01:08:40,795 fichier, ce qui signifie que vous pouvez simplement ajouter sur le dessus de celui-ci. 1500 01:08:40,795 --> 01:08:43,420 Vous pouvez simplement continuer à ajouter à output.txt de chaque chose supplémentaire 1501 01:08:43,420 --> 01:08:44,490 que vous faites. 1502 01:08:44,490 --> 01:08:48,010 Ou, si vous commencez à entrer dans plus de programmes complexes, les deux plus 1503 01:08:48,010 --> 01:08:50,939 que la carotte, qui vient de gravures les messages d'erreur. 1504 01:08:50,939 --> 01:08:53,340 Donc, dire que vous avez un géant quantité de messages d'erreur 1505 01:08:53,340 --> 01:08:54,810 et vous voulez lire par chacun d'eux et vous 1506 01:08:54,810 --> 01:08:56,450 ne veulent pas avoir à faire défiler grâce à votre terminal, 1507 01:08:56,450 --> 01:08:58,651 vous pouvez réellement faire juste supérieure à output.txt 1508 01:08:58,651 --> 01:09:00,359 et ça va pour sauver tous vos erreurs 1509 01:09:00,359 --> 01:09:02,900 dans un fichier appelé output.txt que vous pouvez passer et lire. 1510 01:09:02,900 --> 01:09:04,622 AUDIENCE: Où est le fichier texte sauvé? 1511 01:09:04,622 --> 01:09:07,330 PENG ANDI: Il est enregistré dans le même répertoire que votre programme est. 1512 01:09:07,330 --> 01:09:09,830 Donc, vous allez juste en arrière et regarder pour elle. 1513 01:09:09,830 --> 01:09:11,930 Et la même chose que nous peut faire pour entrée est 1514 01:09:11,930 --> 01:09:14,300 que nous pouvons réellement prendre le contenu de certains fichiers 1515 01:09:14,300 --> 01:09:16,380 et nous ne pouvons que entrée dans notre programme. 1516 01:09:16,380 --> 01:09:19,930 Ainsi, plutôt que d'avoir à faire la commande les arguments de ligne de l'endroit où vous physiquement 1517 01:09:19,930 --> 01:09:21,680 avoir à taper des choses à chaque fois, vous 1518 01:09:21,680 --> 01:09:27,890 peut en fait juste avoir un fichier appelé input.txt qui vient met all-in. 1519 01:09:27,890 --> 01:09:31,970 >> Et puis tuyau est particulièrement cool parce que il peut prendre la sortie d'un programme 1520 01:09:31,970 --> 01:09:34,170 et l'utiliser comme l'entrée d'un autre programme. 1521 01:09:34,170 --> 01:09:38,430 Ainsi, par exemple, dans Vigenere de vos gars, il est cette ligne de code que vous 1522 01:09:38,430 --> 01:09:42,010 les gars sont en cours d'exécution que vous peut-être peut- ne savait pas vraiment ce qu'il était doing-- 1523 01:09:42,010 --> 01:09:46,910 ce ./generate 1,000 tuyau ./42. 1524 01:09:46,910 --> 01:09:47,510 Droit? 1525 01:09:47,510 --> 01:09:51,100 >> Donc tout ce qui est à faire, si nous venons jetez un oeil à cette étape par étape, 1526 01:09:51,100 --> 01:09:55,870 l'./generate, cela signifie que je suis l'exécution de mon programme de générer. 1527 01:09:55,870 --> 01:09:58,850 Qui est prise en 1000 à son entrée. 1528 01:09:58,850 --> 01:10:03,330 Je tiens donc à générer 1.000 aléatoire numéros et je vais tuyau that-- 1529 01:10:03,330 --> 01:10:07,790 ou je vais utiliser that-- sortie comme entrée pour mon programme appelé trouvaille. 1530 01:10:07,790 --> 01:10:12,110 Et je vais essayer de trouver 42 des les nombres générés de celles de 1000 1531 01:10:12,110 --> 01:10:13,130 les chiffres. 1532 01:10:13,130 --> 01:10:15,410 Est-ce que cette ligne de code rend sens pour tout le monde? 1533 01:10:15,410 --> 01:10:17,820 >> Ainsi de cette façon nous économisons nous une tonne d'étapes. 1534 01:10:17,820 --> 01:10:21,880 Nous ne devons pas courir générer, enregistrer le fichier et puis le mettre dans trouvaille. 1535 01:10:21,880 --> 01:10:23,800 Nous ne pouvons tout simplement tout faire en une seule ligne. 1536 01:10:23,800 --> 01:10:28,080 Donc tout ce que génèrent est sortie, plop le droit de retour dans à trouver. 1537 01:10:28,080 --> 01:10:28,580 Ouais? 1538 01:10:28,580 --> 01:10:32,484 >> Public: Et en termes de commande arguments de ligne, est que ce that-- 1539 01:10:32,484 --> 01:10:33,948 trois arguments de ligne de commande? 1540 01:10:33,948 --> 01:10:38,340 Il est de générer, find-- pas, four-- générer, 1000, trouver et 42? 1541 01:10:38,340 --> 01:10:39,134 Ou est the-- 1542 01:10:39,134 --> 01:10:42,050 ANDI PENG: Donc, le tuyau n'a pas vraiment compter comme un argument de ligne de commande 1543 01:10:42,050 --> 01:10:44,590 parce que le compilateur ou le terminale sait que tuyau, 1544 01:10:44,590 --> 01:10:48,590 Oh, je sais que je dois regarder avant le tuyau parce que ma production est 1545 01:10:48,590 --> 01:10:51,220 et je dois veiller à la parce que ce tuyau est mon entrée. 1546 01:10:51,220 --> 01:10:54,520 Donc, il sait l'that-- ./generate et 1000, 1547 01:10:54,520 --> 01:10:57,390 ce sont deux commandes puis arguments juste pour le premier programme. 1548 01:10:57,390 --> 01:11:01,760 Et puis le ./find 42 sont deux commande arguments de ligne pour le deuxième programme. 1549 01:11:01,760 --> 01:11:02,980 Ouais. 1550 01:11:02,980 --> 01:11:06,150 Tout le monde sur cette bonne? 1551 01:11:06,150 --> 01:11:10,610 >> Il suffit donc de réel rapide, qu'est-ce que ces trois lignes de code? 1552 01:11:10,610 --> 01:11:11,606 Assez simple. 1553 01:11:11,606 --> 01:11:13,605 Quelqu'un veut-il me dire ce que la première ligne fait? 1554 01:11:13,605 --> 01:11:18,201 1555 01:11:18,201 --> 01:11:19,117 AUDIENCE: [inaudible]. 1556 01:11:19,117 --> 01:11:23,540 1557 01:11:23,540 --> 01:11:26,534 >> ANDI PENG: Pensez-y comme just-- qu'est-ce que la plus grande que la carotte faire? 1558 01:11:26,534 --> 01:11:29,299 >> PUBLIC: Il met quelque chose dans la ligne suivante. 1559 01:11:29,299 --> 01:11:31,090 ANDI PENG: Alors, quelle est à l'opposé de ce que? 1560 01:11:31,090 --> 01:11:33,514 PUBLIC: Il met la prochaine chose dans la première chose. 1561 01:11:33,514 --> 01:11:34,180 ANDI PENG: Ouais. 1562 01:11:34,180 --> 01:11:37,550 Donc tout ce qui est fait est que vous êtes l'exécution d'un programme .hello-- 1563 01:11:37,550 --> 01:11:40,010 vous exécutez un programme nommé bonjour. 1564 01:11:40,010 --> 01:11:42,960 Vous allez lui donner une entrée appelée input.txt. 1565 01:11:42,960 --> 01:11:43,460 Droit? 1566 01:11:43,460 --> 01:11:46,250 Parce que le considérer comme juste aller physiquement dans bonjour. 1567 01:11:46,250 --> 01:11:50,632 Et puis vous allez enregistrer le sortie dans un fichier appelé output.txt. 1568 01:11:50,632 --> 01:11:51,715 Que diriez-vous de la deuxième ligne? 1569 01:11:51,715 --> 01:11:54,164 Vous voulez me dire ce que la deuxième ligne fait? 1570 01:11:54,164 --> 01:11:55,080 AUDIENCE: [inaudible]. 1571 01:11:55,080 --> 01:12:00,522 1572 01:12:00,522 --> 01:12:01,230 ANDI PENG: Désolé. 1573 01:12:01,230 --> 01:12:03,560 Répète ça. 1574 01:12:03,560 --> 01:12:04,060 Elliot. 1575 01:12:04,060 --> 01:12:06,560 >> Auditoire: Alors, il met un liste des numéros dans trouvaille. 1576 01:12:06,560 --> 01:12:07,540 >> ANDI PENG: Ouais. 1577 01:12:07,540 --> 01:12:10,790 Donc, trouver, rappelez-vous, dans Pour l'exécuter, vous trouverez 1578 01:12:10,790 --> 01:12:13,209 besoin de savoir où vous êtes à la recherche. 1579 01:12:13,209 --> 01:12:15,500 Et donc tout ce qu'il fait ici est qu'il est en vous donnant 1580 01:12:15,500 --> 01:12:18,720 un ensemble de pré affectées de numéros, puis trouver qui se passe 1581 01:12:18,720 --> 01:12:21,680 pour rechercher ceux pour le nombre de 42. 1582 01:12:21,680 --> 01:12:23,620 Et puis 15. 1583 01:12:23,620 --> 01:12:25,870 Rappelez-vous, vous les gars couru ce lorsque vous avez testé votre code. 1584 01:12:25,870 --> 01:12:27,590 Comprenez-vous maintenant ce qu'il faisait? 1585 01:12:27,590 --> 01:12:31,069 1586 01:12:31,069 --> 01:12:33,520 >> PUBLIC: Il est la mise en le jeu d'instructions 1587 01:12:33,520 --> 01:12:38,860 à [inaudible] par un trois par trois pour obtenir the-- pour gagner le match. 1588 01:12:38,860 --> 01:12:39,560 >> ANDI PENG: Ouais. 1589 01:12:39,560 --> 01:12:41,480 >> PUBLIC: Il entre ceux instructions dans le programme. 1590 01:12:41,480 --> 01:12:42,438 >> ANDI PENG: Pretty much. 1591 01:12:42,438 --> 01:12:47,840 Ainsi, le CS50 tilde. / Pset3 / 3x3, tout ce qui faisait était que nous avons créé un texte 1592 01:12:47,840 --> 01:12:50,700 fichier qui avait tout le titres prêts à vous les gars. 1593 01:12:50,700 --> 01:12:56,020 Et pour votre jeu à jouer, vous just-- nous mettons simplement que dans votre programme. 1594 01:12:56,020 --> 01:12:58,230 Donc, nous avions créé ce conseil d'administration et puis nous sommes 1595 01:12:58,230 --> 01:13:02,890 mettre ce conseil dans votre programme qui a eu lieu et a créé une tuile de trois 1596 01:13:02,890 --> 01:13:03,390 par trois. 1597 01:13:03,390 --> 01:13:04,730 Voilà tout ce qu'il faisait. 1598 01:13:04,730 --> 01:13:07,331 >> Et donc il y avait effectivement la magie aller dans les coulisses 1599 01:13:07,331 --> 01:13:09,330 que vous les gars n'a pas programme que nous avons programmés. 1600 01:13:09,330 --> 01:13:13,120 Mais maintenant, vous les gars comprendre pourquoi nous l'avons fait il est donc tout bon. 1601 01:13:13,120 --> 01:13:15,750 Bien. 1602 01:13:15,750 --> 01:13:22,200 >> Ainsi, alors que la redirection est un très utile, C comporte un mécanisme général 1603 01:13:22,200 --> 01:13:25,030 pour la lecture et l'écriture fichiers de son propre. 1604 01:13:25,030 --> 01:13:26,780 Rien conceptuellement difficile ici, donc je suis 1605 01:13:26,780 --> 01:13:28,330 juste aller à travers vraiment, vraiment rapide. 1606 01:13:28,330 --> 01:13:30,621 Tout ce qu'il est est certaine mémorisation et en vous assurant gars 1607 01:13:30,621 --> 01:13:32,680 sont syntaxiquement l'utiliser correctement. 1608 01:13:32,680 --> 01:13:35,640 La façon dont nous ferions qui est créer une référence au fichier, 1609 01:13:35,640 --> 01:13:38,473 nous aimerions ouvrir le fichier, puis nous ferait toute la lecture et l'écriture 1610 01:13:38,473 --> 01:13:39,929 et puis fermez le fichier. 1611 01:13:39,929 --> 01:13:41,720 Lorsque vous les gars chose vouloir garder à l'esprit est 1612 01:13:41,720 --> 01:13:47,360 que tout en faisant cela, parce nous sommes fermeture et l'ouverture des fichiers, 1613 01:13:47,360 --> 01:13:51,230 l'ensemble de ces commandes sont inclus dans le standard-- la norme I / O 1614 01:13:51,230 --> 01:13:51,730 bibliothèque. 1615 01:13:51,730 --> 01:13:54,410 Donc, assurez-vous que chaque fois que vous êtes faisant cela que vous avez included-- 1616 01:13:54,410 --> 01:13:59,020 # included-- E / S standard dot h. 1617 01:13:59,020 --> 01:14:01,691 >> Donc réel rapidement. 1618 01:14:01,691 --> 01:14:03,940 La première étape, vous voulez créer une référence à ce fichier. 1619 01:14:03,940 --> 01:14:07,670 Et maintenant que nous avons des pointeurs fait, vous les gars peuvent me dire ce que cette ligne de code 1620 01:14:07,670 --> 01:14:08,630 fait. 1621 01:14:08,630 --> 01:14:10,250 Droit? 1622 01:14:10,250 --> 01:14:15,397 Tout ce qu'il fait est la création d'un pointeur fichier de fichier de type nommé. 1623 01:14:15,397 --> 01:14:17,980 Parce que vous savez que ça va pour pointer vers un fichier et vous êtes 1624 01:14:17,980 --> 01:14:20,460 va ouvrir le fichier. 1625 01:14:20,460 --> 01:14:23,320 Alors vous êtes f open-- tous ce qu'il fait est d'ouvrir le fichier. 1626 01:14:23,320 --> 01:14:24,560 >> Ceci est le nom du fichier. 1627 01:14:24,560 --> 01:14:26,060 Et il ya trois choses que vous pouvez faire. 1628 01:14:26,060 --> 01:14:28,195 Vous pouvez lire, écrire ou ajouter. 1629 01:14:28,195 --> 01:14:30,320 Plus généralement, les gars seront lecture ou l'écriture 1630 01:14:30,320 --> 01:14:33,195 parce que vous êtes soit allez être l'introduction d'un fichier ou d'une sortie. 1631 01:14:33,195 --> 01:14:36,500 Donc assez bien r et w sont les deux choses que vous allez être en utilisant la plupart. 1632 01:14:36,500 --> 01:14:41,722 >> Donc dans ce cas, tout ce que je l'ai fait est créer un pointeur vers un fichier appelé fichier. 1633 01:14:41,722 --> 01:14:47,900 Je l'ouvrir et je suis reading-- je suis ouvrir ce fichier appelé fichier.txt 1634 01:14:47,900 --> 01:14:49,020 et je le lire. 1635 01:14:49,020 --> 01:14:51,730 Voilà tout ce que je fais en ce moment. 1636 01:14:51,730 --> 01:14:55,270 Et puis ce sont des fonctions juste au que vous pouvez lire des choses différentes 1637 01:14:55,270 --> 01:14:57,750 ou écrire des choses différentes ou passer à des endroits différents 1638 01:14:57,750 --> 01:14:59,420 où vous voulez regarder. 1639 01:14:59,420 --> 01:15:01,200 Tous ces éléments sont en ligne. 1640 01:15:01,200 --> 01:15:02,960 Tous ces il vous suffit de Google. 1641 01:15:02,960 --> 01:15:04,280 Pas besoin de les mémoriser. 1642 01:15:04,280 --> 01:15:07,160 Ils sont juste là, jetable pour votre utilisation 1643 01:15:07,160 --> 01:15:09,360 si vous souhaitez être en mesure de les utiliser. 1644 01:15:09,360 --> 01:15:13,210 >> Donc, si je voulais juste de lire dans un caractère à la fois, 1645 01:15:13,210 --> 01:15:15,360 Je ferais fichier fgetc. 1646 01:15:15,360 --> 01:15:18,850 Ou si je voulais lire dans une ligne de texte à la fois, je le ferais fgets. 1647 01:15:18,850 --> 01:15:19,840 Et ainsi de suite. 1648 01:15:19,840 --> 01:15:23,640 Tous ces suffit de faire différente choses que vous les gars peuvent utiliser. 1649 01:15:23,640 --> 01:15:25,920 >> Et puis enfin, après que je suis fini de lire ou d'écrire, 1650 01:15:25,920 --> 01:15:27,770 Je vais juste fclose ce fichier. 1651 01:15:27,770 --> 01:15:31,760 Et rappelez-vous, ceci est un de ceux qui, rappelez-vous, s'il vous plaît 1652 01:15:31,760 --> 01:15:34,220 faire ceci ou bien votre fichier ne va pas au travail. 1653 01:15:34,220 --> 01:15:36,130 Toujours ouvrir un fichier avant lecture ou lecture, 1654 01:15:36,130 --> 01:15:38,310 vous devez toujours fermer si vous l'ouvrez. 1655 01:15:38,310 --> 01:15:40,210 Même chose avec la mémoire, non? 1656 01:15:40,210 --> 01:15:42,390 Vous devez toujours prendre la mémoire et la libérer. 1657 01:15:42,390 --> 01:15:45,200 Ici, vous devez toujours ouvrir un déposer avant d'essayer de le lire 1658 01:15:45,200 --> 01:15:47,360 et vous avez toujours fermer après que vous l'ouvrez. 1659 01:15:47,360 --> 01:15:50,650 1660 01:15:50,650 --> 01:15:52,190 >> Donc, cela est également en ligne. 1661 01:15:52,190 --> 01:15:55,590 Je vais vous mettre au défi les gars à genre d'écrire un programme qui imprime 1662 01:15:55,590 --> 01:15:57,080 hello.world dans un fichier. 1663 01:15:57,080 --> 01:15:58,280 Il est vraiment simple. 1664 01:15:58,280 --> 01:16:00,854 Il implique essentiellement juste les quelques lignes de code 1665 01:16:00,854 --> 01:16:02,270 qui ont été simplement écrit précédemment. 1666 01:16:02,270 --> 01:16:04,311 Vous allez les mettre ensemble et écrire que. 1667 01:16:04,311 --> 01:16:06,630 1668 01:16:06,630 --> 01:16:10,950 >> Donc certaines choses importantes à garder à l'esprit pendant que vous les gars essaient de l'utiliser. 1669 01:16:10,950 --> 01:16:14,410 Si tout cela est très utile pour votre pset cette semaine, 1670 01:16:14,410 --> 01:16:18,000 est que fopen crée un pointeur de fichier. 1671 01:16:18,000 --> 01:16:19,500 Il est pas réellement le fichier physique. 1672 01:16:19,500 --> 01:16:22,260 Tout ce qu'il pointe vers le fichier que vous souhaitez ouvrir. 1673 01:16:22,260 --> 01:16:26,070 Et vous êtes essentiellement, à chaque fois vous utilisez l'un des autres fonctions 1674 01:16:26,070 --> 01:16:30,130 comme fread ou fwrite ou fgetc ou fgets, est 1675 01:16:30,130 --> 01:16:33,380 que vous soyez juste de passage autour de cette pointeur vers l'ensemble de ces fonctions. 1676 01:16:33,380 --> 01:16:36,510 Donc, vous ne prenez pas de ce que déposer et de l'utiliser pour vos fonctions, 1677 01:16:36,510 --> 01:16:39,540 vous êtes juste en prenant le pointeur et mettre à ces fonctions 1678 01:16:39,540 --> 01:16:41,620 de sorte que vous pouvez utiliser. 1679 01:16:41,620 --> 01:16:45,360 >> Et si vous oubliez de fermer votre fichier après l'avoir utilisé, 1680 01:16:45,360 --> 01:16:47,710 votre programme va fuite de mémoire. 1681 01:16:47,710 --> 01:16:50,700 Essentiellement, tout ce que les moyens est que les mauvaises choses vont arriver 1682 01:16:50,700 --> 01:16:52,960 et votre programme sera ne pas fonctionner correctement. 1683 01:16:52,960 --> 01:16:54,880 Et ainsi de suite dans le pset Au début, je pense 1684 01:16:54,880 --> 01:16:59,180 il ya un court où il explained-- Nate explained-- ce Valgrind était. 1685 01:16:59,180 --> 01:17:02,350 Tout est Valgrind est une façon pour vous de assurez-vous que vous n'êtes pas une fuite mémoire. 1686 01:17:02,350 --> 01:17:04,433 Donc, vous voulez les gars à faire que vous regardez ce court 1687 01:17:04,433 --> 01:17:08,771 parce que l'explique très bien ce qui se passe. 1688 01:17:08,771 --> 01:17:09,270 D'ACCORD. 1689 01:17:09,270 --> 01:17:11,260 Alors je suis allé à travers ce vraiment, très rapidement parce que je vraiment 1690 01:17:11,260 --> 01:17:13,870 vouloir apprendre à parler le pset avant vous les gars congé. 1691 01:17:13,870 --> 01:17:16,690 Quelqu'un at-il des questions sur le plan conceptuel? 1692 01:17:16,690 --> 01:17:20,060 Effacer tout cela est juste que la syntaxe vous pouvez utiliser pour lire ou écrire des fichiers. 1693 01:17:20,060 --> 01:17:25,090 1694 01:17:25,090 --> 01:17:28,140 >> Enfin, le favori de tout le monde. 1695 01:17:28,140 --> 01:17:31,760 Nous allons parler de la pset maintenant. 1696 01:17:31,760 --> 01:17:35,990 Donc, à main levée, combien de vous les gars lire la spec cette semaine? 1697 01:17:35,990 --> 01:17:36,660 Oh, soit la moitié. 1698 01:17:36,660 --> 01:17:38,000 C'est bien. 1699 01:17:38,000 --> 01:17:41,430 Donc, cela est en fait un très, pset vraiment amusant dans le sens 1700 01:17:41,430 --> 01:17:43,889 que vous vous sentez comme un détective parce que vous êtes 1701 01:17:43,889 --> 01:17:46,930 faire toutes ces choses vraiment cool que vous ne saviez pas que vous pourriez faire 1702 01:17:46,930 --> 01:17:49,050 mais maintenant il est vraiment cool que vous pouvez les faire. 1703 01:17:49,050 --> 01:17:52,400 Et il est effectivement beaucoup plus simple que vous en pensez. 1704 01:17:52,400 --> 01:17:56,640 >> Ainsi, les moitiés de base de ce programme sont que vous êtes 1705 01:17:56,640 --> 01:18:00,330 allez télécharger le code source ou code de distribution écrit par nous. 1706 01:18:00,330 --> 01:18:03,540 Et vous allez avoir un dossier appelé BMP et un autre dossier 1707 01:18:03,540 --> 01:18:05,550 appelé JPG. 1708 01:18:05,550 --> 01:18:08,370 Au sein de votre BMP, vous êtes va avoir trois programmes. 1709 01:18:08,370 --> 01:18:10,400 L'un d'eux est déjà écrit pour vous. 1710 01:18:10,400 --> 01:18:12,477 Donc copy.c est un programme Nous avons déjà écrit 1711 01:18:12,477 --> 01:18:14,060 pour vous que vous allez télécharger. 1712 01:18:14,060 --> 01:18:19,440 Tout ce qui ne fait que prendre en entrée une image et fait une copie de celui-ci en sortie. 1713 01:18:19,440 --> 01:18:22,150 Voilà tout ce fichier est en train de faire. 1714 01:18:22,150 --> 01:18:25,260 >> Mais ce que vous voulez faire pour whodunit-- donc combien d'entre vous 1715 01:18:25,260 --> 01:18:30,450 les gars se souviennent en cinquième année ou maybe-- vous êtes peut-être younger-- troisième année, 1716 01:18:30,450 --> 01:18:33,945 quand vous avez eu des messages secrets et vous aviez à mettre un morceau de papier sur elle 1717 01:18:33,945 --> 01:18:35,440 à décoder le message? 1718 01:18:35,440 --> 01:18:36,000 Ouais? 1719 01:18:36,000 --> 01:18:39,580 Voilà donc tout ce que nous faisons sauf que cette fois pour un ordinateur. 1720 01:18:39,580 --> 01:18:41,832 Donc, nous vous avons donné cette belle image. 1721 01:18:41,832 --> 01:18:43,540 Ne ressemble pas quoi que ce soit mais en dessous 1722 01:18:43,540 --> 01:18:49,660 il est un indice qui va vous aider avec répondre à la question que nous vous demandons. 1723 01:18:49,660 --> 01:18:54,170 >> Essentiellement, ce que vous voulez à faire est entrée ce fichier, 1724 01:18:54,170 --> 01:18:56,610 modifier certaines choses autour, peut-être ajuster les couleurs, 1725 01:18:56,610 --> 01:19:00,730 changer les choses, de sorte que tout le message est peut venir à travers. 1726 01:19:00,730 --> 01:19:03,740 Donc, à l'intérieur se cachent et les informations de pixels 1727 01:19:03,740 --> 01:19:07,140 que si vous écrivez votre code correctement va décoder et vous dire 1728 01:19:07,140 --> 01:19:08,500 ce que cet indice est. 1729 01:19:08,500 --> 01:19:12,480 Et ainsi de quelques conseils utiles sur la façon dont vous iriez à propos de cette approche. 1730 01:19:12,480 --> 01:19:15,180 >> Vous voulez vraiment familiariser vous avec le fichier I / O 1731 01:19:15,180 --> 01:19:18,760 parce que nous sommes la lecture à partir de fichiers et l'écriture de fichiers. 1732 01:19:18,760 --> 01:19:19,260 Droit? 1733 01:19:19,260 --> 01:19:21,430 Et donc, chaque fois que nous faisons que, qui implique 1734 01:19:21,430 --> 01:19:25,170 File I / O. Tu vas avoir à vous familiariser 1735 01:19:25,170 --> 01:19:27,450 avec, comment voulez-vous ouvrez des fichiers de photos? 1736 01:19:27,450 --> 01:19:29,960 Comment écrivez-vous à des fichiers comme des photos? 1737 01:19:29,960 --> 01:19:31,640 Comment faites-vous toutes ces choses? 1738 01:19:31,640 --> 01:19:33,660 Ça va être vraiment utile. 1739 01:19:33,660 --> 01:19:36,190 >> Deuxièmement, comment allez-vous va être en mesure de changer 1740 01:19:36,190 --> 01:19:38,140 les couleurs qui éclaircir cette image? 1741 01:19:38,140 --> 01:19:43,660 Il va probablement impliquer ajuster vos pixels ou vos valeurs RVB 1742 01:19:43,660 --> 01:19:45,390 quelque part là-dedans, essentiellement. 1743 01:19:45,390 --> 01:19:47,800 Il n'y a aucun moyen de droit résoudre ce aussi longtemps que vous 1744 01:19:47,800 --> 01:19:52,560 can-- aussi longtemps que vous le pouvez sorte de ajuster ces pixels pour le faire 1745 01:19:52,560 --> 01:19:54,640 ressembler à quelque chose que vous vous souciez. 1746 01:19:54,640 --> 01:19:56,207 Voilà tout ce que nous préoccupons aussi bien. 1747 01:19:56,207 --> 01:19:57,540 Donc, il ya beaucoup de façons de le faire. 1748 01:19:57,540 --> 01:20:00,039 Juste jouer avec elle jusqu'à ce vous obtenez quelque chose qui fonctionne. 1749 01:20:00,039 --> 01:20:02,900 Et vous seriez vraiment surpris de voir comment quelques lignes de code 1750 01:20:02,900 --> 01:20:04,510 vous devez effectivement faire. 1751 01:20:04,510 --> 01:20:08,700 Je parle comme trois lignes de code totale 1752 01:20:08,700 --> 01:20:11,310 que vous devez écrire pour ce faire. 1753 01:20:11,310 --> 01:20:15,470 Donc, si vous vous trouvez écriture 40, 30 lignes de code, 1754 01:20:15,470 --> 01:20:16,960 vous êtes probablement faire mal. 1755 01:20:16,960 --> 01:20:19,390 Tout ce que vous avez à faire est une sorte de jouer avec les couleurs 1756 01:20:19,390 --> 01:20:22,960 et voir comment cela fonctionne. 1757 01:20:22,960 --> 01:20:27,040 >> Alors nous nous dirigeons vers un peu à plus fort d'un problème. 1758 01:20:27,040 --> 01:20:30,190 Ici, nous avons redimensionner où nous vous demandons 1759 01:20:30,190 --> 01:20:34,210 to-- nous vous donnons comme entrée une image et votre redimensionnement 1760 01:20:34,210 --> 01:20:36,710 cette image en quelque chose plus grand ou plus petit quelque chose 1761 01:20:36,710 --> 01:20:38,500 en fonction des dimensions que nous vous donnons. 1762 01:20:38,500 --> 01:20:41,260 Alors rappelez-vous dans la leçon que David rapidement 1763 01:20:41,260 --> 01:20:45,780 jeta un regard sur la façon dont l'information est détecté par vos ordinateurs 1764 01:20:45,780 --> 01:20:47,590 pour signifier qu'il est un type de fichier. 1765 01:20:47,590 --> 01:20:50,530 Ainsi, un fichier Word dispose spéciale caractères devant que 1766 01:20:50,530 --> 01:20:52,040 dire à votre ordinateur, il est un fichier Word. 1767 01:20:52,040 --> 01:20:53,090 Même chose avec un fichier JPEG. 1768 01:20:53,090 --> 01:20:55,131 Dans ce cas, nous allons pour vous donner un fichier JPEG. 1769 01:20:55,131 --> 01:20:58,300 Tout ce que nous savons est que JPEG fichier est une image, non? 1770 01:20:58,300 --> 01:21:01,430 Mais les distingue informatiques dans des domaines très spécifiques. 1771 01:21:01,430 --> 01:21:04,070 Ainsi, au début de tout fichier JPEG, vous êtes 1772 01:21:04,070 --> 01:21:08,210 va avoir ce qu'on appelle le bitmap Renseignements tête et l'en-tête de fichier bitmap. 1773 01:21:08,210 --> 01:21:11,080 Tous ceux qui sont sont différents éléments de données 1774 01:21:11,080 --> 01:21:14,870 qui racontent votre ordinateur, hé, écoutez, un JPEG venir 1775 01:21:14,870 --> 01:21:17,820 et ce sont les dimensions ou caractéristiques de ce JPEG. 1776 01:21:17,820 --> 01:21:21,280 >> Alors vous les gars veulent vraiment savoir quelle information est stockée à l'intérieur 1777 01:21:21,280 --> 01:21:23,560 de ces têtes et quelle est la taille d'entre eux. 1778 01:21:23,560 --> 01:21:25,640 Parce que quand vous courez dans votre programme, 1779 01:21:25,640 --> 01:21:27,370 vous allez vouloir sauter ce montant. 1780 01:21:27,370 --> 01:21:27,940 Droit? 1781 01:21:27,940 --> 01:21:29,910 Parce que vous ne vous souciez pas sur la modification du tête, 1782 01:21:29,910 --> 01:21:31,493 vous vous souciez de modifier ce qui est après. 1783 01:21:31,493 --> 01:21:32,450 Droit? 1784 01:21:32,450 --> 01:21:36,040 Alors assurez-vous les gars savent comment ces choses sont grandes. 1785 01:21:36,040 --> 01:21:39,065 >> Deuxièmement, avant de commencer essayer de redimensionner votre image, 1786 01:21:39,065 --> 01:21:41,940 vous allez probablement vouloir enregistrer les dimensions de l'original. 1787 01:21:41,940 --> 01:21:42,520 Droit? 1788 01:21:42,520 --> 01:21:45,550 Parce que si je vous dis cette image est de 100 pixels par 100 pixels, 1789 01:21:45,550 --> 01:21:47,630 et je veux que vous fassiez quatre fois plus grand, 1790 01:21:47,630 --> 01:21:50,460 vous savez que vous avez à multiplier ces dimensions par quatre. 1791 01:21:50,460 --> 01:21:54,960 Ainsi donc, vous voulez un fichier de sortie 400 par 400 pixels, par exemple. 1792 01:21:54,960 --> 01:21:58,300 Donc, il est vraiment utile pour vous les gars à enregistrer les dimensions de l'original. 1793 01:21:58,300 --> 01:22:00,780 Et puis après, après vous avez terminé le redimensionnement, 1794 01:22:00,780 --> 01:22:06,270 vous pouvez écrire de nouvelles têtes avec ces nouvelles dimensions après le redimensionnement. 1795 01:22:06,270 --> 01:22:10,750 >> Et la façon dont vous physiquement peut créer de gros pixels 1796 01:22:10,750 --> 01:22:13,380 est que vous pouvez écrire nouvelle RGB-- rappelez-vous, RVB, 1797 01:22:13,380 --> 01:22:17,784 tout ce qui est synonyme de rouge, vert, et les pixels blue-- à un fichier sur. 1798 01:22:17,784 --> 01:22:20,200 Et vous allez vouloir avoir des quantités différentes de ce que 1799 01:22:20,200 --> 01:22:21,200 nous appelons rembourrage. 1800 01:22:21,200 --> 01:22:24,780 Tous les espaces sont rembourrage est photos avant et après 1801 01:22:24,780 --> 01:22:29,265 que dire essentiellement que your-- dire à votre image comment grand, il 1802 01:22:29,265 --> 01:22:30,589 devrait prendre place. 1803 01:22:30,589 --> 01:22:33,630 Ceci est très abstraite pour beaucoup de vous si vous ne l'avez pas lu la spec pset, 1804 01:22:33,630 --> 01:22:35,410 mais il va être très utile lorsque 1805 01:22:35,410 --> 01:22:36,460 vous êtes en train de lire à travers elle. 1806 01:22:36,460 --> 01:22:38,126 Vous êtes comme, oh, oui, cela fait sens. 1807 01:22:38,126 --> 01:22:39,310 Pourquoi dois-je faire cela? 1808 01:22:39,310 --> 01:22:41,830 Fait sens. 1809 01:22:41,830 --> 01:22:46,900 >> Enfin, ce qui est probablement l'un des programmes les plus frustrantes 1810 01:22:46,900 --> 01:22:51,160 jamais juste parce que vous ne pouvez pas dire si ça marche ou pas. 1811 01:22:51,160 --> 01:22:54,980 Tout ce programme, récupérer, est faire est que, si fonctionner correctement, 1812 01:22:54,980 --> 01:22:59,290 il doit être capable de soudain récupérer 50 images 1813 01:22:59,290 --> 01:23:01,025 ont été perdus sur notre disque dur. 1814 01:23:01,025 --> 01:23:03,900 Et donc le problème avec ce programme est que vous ne pouvez pas vraiment le tester 1815 01:23:03,900 --> 01:23:06,220 soit parce que vous avez récupéré eux ou vous ne l'ont pas. 1816 01:23:06,220 --> 01:23:09,122 Et si vous sorte de juste avoir à jouer avec elle, 1817 01:23:09,122 --> 01:23:11,080 et si votre programme est fonctionne correctement, vous allez 1818 01:23:11,080 --> 01:23:12,829 voir tout à coup que dans votre répertoire que vous avez 1819 01:23:12,829 --> 01:23:17,400 obtenu une quantité gigantesque de images qui sont maintenant là-bas. 1820 01:23:17,400 --> 01:23:20,490 >> Alors, comment je approcher ce problème est, nous sommes 1821 01:23:20,490 --> 01:23:22,860 va vous donner ce qui est appelé un fichier card.raw. 1822 01:23:22,860 --> 01:23:25,020 Essentiellement, voilà juste un fichier corrompu 1823 01:23:25,020 --> 01:23:28,870 avec toutes les images stockées que vous allez avoir besoin de récupérer. 1824 01:23:28,870 --> 01:23:32,330 Donc, vous allez probablement vouloir à l'entrée de votre card.raw, ou ouvert, 1825 01:23:32,330 --> 01:23:35,510 votre fichier et vous êtes card.raw allez vouloir manipuler 1826 01:23:35,510 --> 01:23:37,840 qu'il soit capable de stocker les fichiers JPEG. 1827 01:23:37,840 --> 01:23:42,830 >> Donc, je voudrais commencer par le suivi et le stockage chaque individu JPEG que vous trouver. 1828 01:23:42,830 --> 01:23:47,180 Tu ne vas pas à tous individuellement d'un coup, il suffit de créer tous les 50 fichiers JPEG. 1829 01:23:47,180 --> 01:23:50,190 Vous allez vouloir garder trace de combien vous ouvrez. 1830 01:23:50,190 --> 01:23:52,015 Et puis vous voulez assurez-vous que, lorsque vous êtes 1831 01:23:52,015 --> 01:23:54,640 écriture à un buffer-- vous les gars va savoir ce que je parle 1832 01:23:54,640 --> 01:23:57,806 une fois que vous lisez le spec-- vous voulez assurez-vous que vous utilisez un unsigned 1833 01:23:57,806 --> 01:23:59,370 omble tampon. 1834 01:23:59,370 --> 01:24:01,790 >> Et puis, vous voulez poser vous la question de, 1835 01:24:01,790 --> 01:24:05,797 le nombre d'octets se trouvent dans une CF-- sont dans un fichier de la carte? 1836 01:24:05,797 --> 01:24:08,380 Voilà combien vous allez envie de lire dans votre mémoire tampon. 1837 01:24:08,380 --> 01:24:11,130 Vous allez vouloir vous assurer les deux align car alors vous 1838 01:24:11,130 --> 01:24:12,850 aura pas mémoire vive fuite. 1839 01:24:12,850 --> 01:24:15,370 Vous savez exactement combien octets dont vous avez besoin et combien 1840 01:24:15,370 --> 01:24:18,270 octets que vous voulez qu'ils ont. 1841 01:24:18,270 --> 01:24:21,510 >> Et puis finalement, vous voulez utiliser une fonction appelée sprint-- 1842 01:24:21,510 --> 01:24:26,160 s Imprimer F-- pour générer fichier personnalisé noms pour chaque nouveau JPEG que vous trouvez. 1843 01:24:26,160 --> 01:24:29,129 Donc, comme vous créez et trouver des fichiers JPEG sur votre carte, 1844 01:24:29,129 --> 01:24:31,170 vous allez vouloir les stocker et de les nommer. 1845 01:24:31,170 --> 01:24:31,700 Droit? 1846 01:24:31,700 --> 01:24:33,700 Et si vous allez vouloir utiliser cette fonction 1847 01:24:33,700 --> 01:24:36,770 pour créer les noms qui peut stocker tous vos fichiers JPEG. 1848 01:24:36,770 --> 01:24:41,062 >> Et enfin, ne pas oublier de fermer chaque JPEG lorsque vous avez terminé. 1849 01:24:41,062 --> 01:24:42,770 Parce que ce que vous êtes va faire est vous êtes 1850 01:24:42,770 --> 01:24:44,728 allez avoir probablement une sorte de boucle qui 1851 01:24:44,728 --> 01:24:46,470 parcourt l'ensemble de vos fichiers JPEG. 1852 01:24:46,470 --> 01:24:50,460 Vous allez écrire un fichier JPEG et renommez-le comme vous le trouverez. 1853 01:24:50,460 --> 01:24:52,870 Mais lorsque vous avez terminé avec chaque seule JPEG, 1854 01:24:52,870 --> 01:24:56,630 vous devez fermer afin que vous puissiez commencer cours et de passer à l'image suivante. 1855 01:24:56,630 --> 01:24:58,880 Et si quelque chose qui est vraiment amusant que nous aimons faire, 1856 01:24:58,880 --> 01:25:03,430 parce que cela est un tel problème bizarre réglé mais aussi un problème étrangement satisfaisante 1857 01:25:03,430 --> 01:25:08,380 ensemble, est que toutes les photos que nous avons avoir pour vous, si vous récupérer correctement, 1858 01:25:08,380 --> 01:25:11,910 toutes les photos sont des photos de votre merveilleux personnel enseignant, à la fois 1859 01:25:11,910 --> 01:25:14,240 de Harvard, au ici-- et ici, à Yale. 1860 01:25:14,240 --> 01:25:17,260 Et si vous arrivez à récupérer toutes ces photos 1861 01:25:17,260 --> 01:25:20,020 et d'identifier le personnel les membres de ces cartes, 1862 01:25:20,020 --> 01:25:23,040 et de prendre selfies avec nous si vous nous trouverez sur le campus, 1863 01:25:23,040 --> 01:25:28,270 pour chaque photo que vous nous soumettez, nous allons vous donner un gigaoctet d'espace Dropbox. 1864 01:25:28,270 --> 01:25:30,060 >> Alors, faisons le calcul ici. 1865 01:25:30,060 --> 01:25:33,010 Si il ya 50 photos et 50 membres du personnel de l'enseignement, 1866 01:25:33,010 --> 01:25:37,160 si vous arrivez à trouver tous les 50 du nous, qui est de 50 giga-octets de Dropbox, 1867 01:25:37,160 --> 01:25:39,000 Fondamentalement, nous vous donnerons les gars. 1868 01:25:39,000 --> 01:25:42,380 Ainsi, certaines incitations supplémentaires ajoutés si vous les gars n'a pas seulement 1869 01:25:42,380 --> 01:25:44,480 soucier de récupérer des images perdues. 1870 01:25:44,480 --> 01:25:46,867 Il ya aussi des incitations supplémentaires. 1871 01:25:46,867 --> 01:25:47,825 Il est un ensemble de problème amusant. 1872 01:25:47,825 --> 01:25:48,390 Ça l'est vraiment. 1873 01:25:48,390 --> 01:25:51,980 Il est un peu frustrant, mais il devient vraiment amusant quand vous réalisez, 1874 01:25:51,980 --> 01:25:54,230 wow, ça marche et maintenant je avoir toutes ces photos 1875 01:25:54,230 --> 01:25:55,604 que je viens de créer par moi-même. 1876 01:25:55,604 --> 01:25:58,800 1877 01:25:58,800 --> 01:26:00,075 >> Des questions sur le jeu de processeurs? 1878 01:26:00,075 --> 01:26:02,408 Pour quelqu'un qui est déjà commencé, si vous avez des questions, 1879 01:26:02,408 --> 01:26:06,510 Je serai là pour quelques minutes après section si vous voulez me parler. 1880 01:26:06,510 --> 01:26:07,320 Bravo, les gars. 1881 01:26:07,320 --> 01:26:10,520 Je suis désolé, je informations déversés sur vous les gars. 1882 01:26:10,520 --> 01:26:13,670 Les pointeurs sont vraiment, vraiment difficile et frustrant. 1883 01:26:13,670 --> 01:26:16,187 >> Et je suis vraiment heureux que vous les gars sont restés avec moi. 1884 01:26:16,187 --> 01:26:18,020 Nous parlerons plus en profondeur au sujet de la semaine prochaine 1885 01:26:18,020 --> 01:26:21,330 que nous commençons à faire des tables de hachage et plus de fonctions qui les concernent. 1886 01:26:21,330 --> 01:26:23,821 1887 01:26:23,821 --> 01:26:24,320 Ouais. 1888 01:26:24,320 --> 01:26:26,278 Donc, si quelqu'un a des des questions, je serai autour. 1889 01:26:26,278 --> 01:26:29,330 Merci d'être venu et de prendre plus des bonbons parce qu'il n'y a plus de bonbons. 1890 01:26:29,330 --> 01:26:32,220 1891 01:26:32,220 --> 01:26:33,770 Frais. 1892 01:26:33,770 --> 01:26:35,765