1 00:00:00,000 --> 00:00:00,960 2 00:00:00,960 --> 00:00:03,360 >> [Παίζει μουσική] 3 00:00:03,360 --> 00:00:11,050 4 00:00:11,050 --> 00:00:12,065 >> Davin: Εντάξει, παιδιά. 5 00:00:12,065 --> 00:00:13,642 6 00:00:13,642 --> 00:00:15,350 Έτσι, αυτό είναι η αναθεώρηση για το πρώτο κουίζ. 7 00:00:15,350 --> 00:00:17,751 Είναι όλοι έτοιμοι για το κουίζ την Τετάρτη; 8 00:00:17,751 --> 00:00:18,292 ALLISON: Woo! 9 00:00:18,292 --> 00:00:18,743 ΜΑΘΗΤΗ: Woo! 10 00:00:18,743 --> 00:00:19,242 Davin: Ναι. 11 00:00:19,242 --> 00:00:19,920 ALLISON: Ναι! 12 00:00:19,920 --> 00:00:20,920 Davin: Αυτός ο τύπος είναι έτοιμο. 13 00:00:20,920 --> 00:00:22,200 Αυτός ο τύπος, δύο χέρια, ωραία. 14 00:00:22,200 --> 00:00:23,234 15 00:00:23,234 --> 00:00:25,900 Έτσι κουίζ επανεξέταση σήμερα, πρόκειται να είναι περίπου μία ώρα και ένα μισό. 16 00:00:25,900 --> 00:00:27,940 Εμείς πάμε για να πάει πέρα ​​από όλα τα μεγάλα έννοιες που πρέπει να ξέρετε για το κουίζ. 17 00:00:27,940 --> 00:00:31,434 Εμείς πάμε για να πάει πέρα ​​από κάποια κωδικοποίηση από παραδείγματα χέρι, το οποίο είναι σε κάθε κουίζ. 18 00:00:31,434 --> 00:00:34,350 Και αν έχετε ερωτήσεις, μη διστάσετε να σηκώσεις το χέρι σου και τα πάντα 19 00:00:34,350 --> 00:00:34,945 όπως αυτό. 20 00:00:34,945 --> 00:00:36,695 Λοιπόν, σχετικά με την εφοδιαστική το κουίζ είναι online. 21 00:00:36,695 --> 00:00:38,450 Έτσι θα πάμε να χωρίσει τους ανθρώπους επάνω σε διαφορετικά δωμάτια. 22 00:00:38,450 --> 00:00:39,491 Είναι βασισμένο στο όνομά τους. 23 00:00:39,491 --> 00:00:43,630 Έτσι, εάν έχετε οποιεσδήποτε ερωτήσεις σχετικά με το πού να πάει ή για το τι υλικό είναι, όπως, 24 00:00:43,630 --> 00:00:46,810 η επίσημη λέξη για το τι συμβαίνει να είναι στο κουίζ, ελέγχει on-line. 25 00:00:46,810 --> 00:00:48,420 Και αυτό είναι όλο μέχρι σήμερα. 26 00:00:48,420 --> 00:00:51,280 Έτσι, εάν δεν υπάρχουν ερωτήσεις για να Κατ 'αρχάς, θα πάμε για να ξεκινήσετε. 27 00:00:51,280 --> 00:00:52,790 28 00:00:52,790 --> 00:00:53,710 Και εδώ είναι Allison. 29 00:00:53,710 --> 00:00:56,060 30 00:00:56,060 --> 00:00:57,000 >> [Χειροκροτήματα] 31 00:00:57,000 --> 00:00:59,300 >> ALLISON: Εντάξει, ευχαριστώ, Rob. 32 00:00:59,300 --> 00:01:00,280 Εκτιμήστε αυτό. 33 00:01:00,280 --> 00:01:01,350 34 00:01:01,350 --> 00:01:03,050 Davin έπρεπε να γυρίσει σε αυτό. 35 00:01:03,050 --> 00:01:07,240 Αυτό είναι το μη εξαντλητικό κατάλογο των θέματα, όπως πάντα, όπως Davin είπε απλά. 36 00:01:07,240 --> 00:01:10,860 Συμβουλευτείτε την τεκμηρίωση σε απευθείας σύνδεση για το κουίζ μηδέν. 37 00:01:10,860 --> 00:01:13,680 Αλλά αυτό είναι αρκετά much-- είναι στην εξεταστέα ύλη 38 00:01:13,680 --> 00:01:15,550 είναι ό, τι έχουμε περάσει πάνω μέχρι στιγμής. 39 00:01:15,550 --> 00:01:18,290 Τα πάντα εδώ είναι δίκαιο παιχνίδι, καθώς και οτιδήποτε άλλο 40 00:01:18,290 --> 00:01:21,380 ότι μπορεί να έχουν αναφερθεί σε διάλεξη. 41 00:01:21,380 --> 00:01:25,070 >> Το τμήμα μου, εδώ, είναι απλά πολλή κριτική. 42 00:01:25,070 --> 00:01:27,775 Υπάρχουν ένα-δύο ασκήσεις ότι εσείς θα μπορούσε να λειτουργήσει σε. 43 00:01:27,775 --> 00:01:30,650 Αλλά για το μεγαλύτερο μέρος, πραγματικά θέλουν να πάρουν στο Davin με εκείνα κωδικό 44 00:01:30,650 --> 00:01:31,710 με ασκήσεις χεριών. 45 00:01:31,710 --> 00:01:33,940 >> Έτσι, εγώ είμαι πρόκειται να πετάξει μέσα από αυτό. 46 00:01:33,940 --> 00:01:36,330 Εάν έχετε οποιεσδήποτε ερωτήσεις, να με σταματήσει. 47 00:01:36,330 --> 00:01:37,270 Σηκώστε το χέρι σας. 48 00:01:37,270 --> 00:01:39,250 Υπόσχομαι ότι θα σας δούμε κατά πάσα πιθανότητα. 49 00:01:39,250 --> 00:01:41,042 Αν όχι, απλά το κύμα γύρω. 50 00:01:41,042 --> 00:01:42,250 Πάω να μιλάει γρήγορα. 51 00:01:42,250 --> 00:01:43,950 Ελπίζω ότι ο καθένας είναι εντάξει με αυτό. 52 00:01:43,950 --> 00:01:48,020 >> Εντάξει, ειδική λέξη, Davin προφανώς ξέχασε να ξεφυλλίσετε τις διαφάνειες. 53 00:01:48,020 --> 00:01:51,880 [Γέλια] Είσαι σε μπελάδες, ο άνθρωπος. 54 00:01:51,880 --> 00:01:55,770 Έτσι, συμβουλές για το κουίζ μηδέν, πρακτική κωδικοποίησης σε χαρτί. 55 00:01:55,770 --> 00:01:58,950 Οι Εσείς πρόκειται να πάρετε κάποια πρακτική με εκείνη τώρα με Davin, 56 00:01:58,950 --> 00:02:00,655 έτσι δεν θα είστε εντελώς μόνοι σας. 57 00:02:00,655 --> 00:02:03,030 Νομίζω ότι είμαστε στην πραγματικότητα θα μέσω αυτών των δύο λειτουργίες. 58 00:02:03,030 --> 00:02:04,500 Έτσι, θα είστε καλά προετοιμασμένοι εκεί. 59 00:02:04,500 --> 00:02:05,958 >> Να είστε εξοικειωμένοι με το πρόβλημα σύνολα σας. 60 00:02:05,958 --> 00:02:08,150 Υπήρξαν ερωτήσεις στις προηγούμενες κουίζ 61 00:02:08,150 --> 00:02:12,680 ότι θα ζητήσει, για παράδειγμα, να κωδικοποιήσει κάτι πολύ παρόμοια με Mario. 62 00:02:12,680 --> 00:02:15,060 Έτσι, είναι πολύ εξοικειωμένοι με το πρόβλημά σας θέτει, καθώς και 63 00:02:15,060 --> 00:02:17,827 ως τις ερωτήσεις σας ζητάμε στην αρχή στο έντυπο 64 00:02:17,827 --> 00:02:19,660 ότι μπορείτε να συμπληρώσετε, θα σας εξυπηρετήσει πολύ καλά. 65 00:02:19,660 --> 00:02:20,940 66 00:02:20,940 --> 00:02:23,380 >> Κάνετε μια προηγούμενη κουίζ κάτω οι χρονικοί περιορισμοί. 67 00:02:23,380 --> 00:02:25,430 Αυτά τα κουίζ είναι μακρά. 68 00:02:25,430 --> 00:02:26,850 Ο χρόνος περνά πολύ γρήγορα. 69 00:02:26,850 --> 00:02:30,480 Και συχνά, δεν συνειδητοποιούν πόσο γρήγορα θα πάει μέχρι να πραγματικά 70 00:02:30,480 --> 00:02:32,180 θέσει τον εαυτό σας στο πλαίσιο αυτών των περιορισμών. 71 00:02:32,180 --> 00:02:36,500 Έτσι, αν μπορείτε απλά να χαράξει, ξέρετε, 75 λεπτών, είτε απόψε είτε αύριο 72 00:02:36,500 --> 00:02:41,020 να πάρει ένα από αυτά τα κουίζ κάτω ότι, θα είναι σε πολύ καλύτερη κατάσταση. 73 00:02:41,020 --> 00:02:43,060 >> Και, επίσης, τη δημιουργία φύλλων αναφοράς σας. 74 00:02:43,060 --> 00:02:45,290 Θυμηθείτε, μπορείτε να πάρετε ένα μπροστινή σελίδα και πίσω 75 00:02:45,290 --> 00:02:47,040 ως σημείο αναφοράς για το κουίζ σας την Τετάρτη. 76 00:02:47,040 --> 00:02:49,074 Δημιουργία ότι είναι ένας πολύ καλός τρόπος για να σπουδάσουν. 77 00:02:49,074 --> 00:02:51,990 Οτιδήποτε έχετε πρόβλημα με θέλετε να συμπεριλάβετε εκεί. 78 00:02:51,990 --> 00:02:55,627 Οτιδήποτε TFs σας έχουν, όπως, αυτό είναι πραγματικά σημαντικό. 79 00:02:55,627 --> 00:02:57,960 Θα πρέπει να το γνωρίζουν αυτό, είναι ίσως τα πράγματα που έχετε εκεί 80 00:02:57,960 --> 00:02:59,931 αν δεν έχετε τα απομνημονεύσει. 81 00:02:59,931 --> 00:03:02,680 Ακόμα κι αν δεν τους ξέρουν πραγματικά καλά, μερικές φορές έχει εκεί 82 00:03:02,680 --> 00:03:07,030 είναι ακριβώς το είδος της άνεσης για σας, το οποίο γνωρίζω κουίζ είναι αγχωτικό. 83 00:03:07,030 --> 00:03:09,260 Έτσι κάθε άνεση που μπορείτε να πάρετε μπορεί να βοηθήσει. 84 00:03:09,260 --> 00:03:13,072 Εντάξει, επίσης, να πάρετε τον ύπνο και τρώνε και σαν μια κανονική πράγματα 85 00:03:13,072 --> 00:03:14,280 ότι μπορούμε να σας πω για κουίζ. 86 00:03:14,280 --> 00:03:16,320 87 00:03:16,320 --> 00:03:18,890 >> Έτσι, ξεκινώντας εύκολο, τύπους δεδομένων και μεγέθη. 88 00:03:18,890 --> 00:03:22,720 Όπως είπα, αυτό ακριβώς συμβαίνει να μου ρίχνουν πολλά πράγματα 89 00:03:22,720 --> 00:03:24,320 εδώ ότι θα πρέπει να γνωρίζετε. 90 00:03:24,320 --> 00:03:27,600 Έτσι έχουμε χαρακτήρες μας που είναι ένα byte, ints 91 00:03:27,600 --> 00:03:30,390 που είναι τέσσερις ψηφιολέξεις, μακρύ καιρό, τα οποία είναι οκτώ bytes. 92 00:03:30,390 --> 00:03:33,280 Βασικά, αυτό είναι μόνο η δική σας θέλουν να έχουν μεγαλύτερες ακέραιοι. 93 00:03:33,280 --> 00:03:35,490 Πλωτήρες, οι οποίες είναι τέσσερις, δίκλινα, που είναι οκτώ. 94 00:03:35,490 --> 00:03:38,150 Και πάλι, δίνει λίγο περισσότερα χώρος για πλωτήρες σας. 95 00:03:38,150 --> 00:03:41,290 Και στη συνέχεια, πληκτρολογήστε αστέρων, έτσι ώστε κάθε δείκτη σε μια μηχανή 32-bit, 96 00:03:41,290 --> 00:03:44,650 που είναι όλοι εσείς χρειάζεστε να γνωρίζουν, είναι τέσσερα byte. 97 00:03:44,650 --> 00:03:46,542 >> Έτσι, όλα τα πράγματα που πρέπει να ξέρω, ίσως τα πράγματα 98 00:03:46,542 --> 00:03:48,250 θέλετε να έχετε στο φύλλο αναφοράς σας. 99 00:03:48,250 --> 00:03:50,350 100 00:03:50,350 --> 00:03:53,520 Εντάξει, δυαδική μετατροπή σε δυαδικό, μετατροπή 101 00:03:53,520 --> 00:03:56,860 σε δεκαεξαδικό, εμπρός και πίσω, όλα τα πράγματα που πρέπει να ξέρετε. 102 00:03:56,860 --> 00:03:59,480 Έτσι, από δυαδικό σε δεκαδικό. 103 00:03:59,480 --> 00:04:03,309 Εσείς θέλετε να πάρετε μια γρήγορη λεπτό και να προσπαθήσουμε και να καταλάβω το καθένα από αυτά 104 00:04:03,309 --> 00:04:04,600 και στη συνέχεια να μου πείτε ποια είναι αυτά; 105 00:04:04,600 --> 00:04:06,500 106 00:04:06,500 --> 00:04:10,240 >> Έχω, επίσης, καραμέλα στην τσάντα μου, έτσι ώστε ο καθένας ο οποίος απαντά παίρνει καραμέλα, από τον τρόπο. 107 00:04:10,240 --> 00:04:13,560 108 00:04:13,560 --> 00:04:14,480 Και έχω πολλά από αυτό. 109 00:04:14,480 --> 00:04:15,760 110 00:04:15,760 --> 00:04:16,870 Επιτρέψτε μου να αρπάξει αυτό. 111 00:04:16,870 --> 00:04:18,480 Πάω να δώσει αυτό να Gabe. 112 00:04:18,480 --> 00:04:21,829 Έτσι, μπορείτε να το χέρι έξω καραμέλα σε όποιος είναι ωραίο και συνεταιρισμού. 113 00:04:21,829 --> 00:04:23,490 >> Εντάξει, είδα ένα χέρι εκεί στο πίσω μέρος. 114 00:04:23,490 --> 00:04:26,418 115 00:04:26,418 --> 00:04:28,370 >> Φοιτητής: Ναι, η πρώτη είναι 42. 116 00:04:28,370 --> 00:04:30,280 >> ALLISON: Ναι, πρώτα το ένα είναι 42, σωστά. 117 00:04:30,280 --> 00:04:31,163 118 00:04:31,163 --> 00:04:32,038 Φοιτητής: [δεν ακούγεται]. 119 00:04:32,038 --> 00:04:34,810 [Γέλια] 120 00:04:34,810 --> 00:04:37,030 ALLISON: Δεύτερη μία, εκεί πίσω στο κίτρινο; 121 00:04:37,030 --> 00:04:38,910 Φοιτητής: 110010. 122 00:04:38,910 --> 00:04:43,410 ALLISON: Σωστά, και αυτό τελευταία, εδώ κάτω στο κάτω μέρος; 123 00:04:43,410 --> 00:04:44,570 Επίσης, ναι, ξέρετε θέλετε; 124 00:04:44,570 --> 00:04:45,550 Απλά πετάξτε έξω καραμέλα. 125 00:04:45,550 --> 00:04:46,483 Πόσο περίπου καραμέλα για όλους; 126 00:04:46,483 --> 00:04:47,510 >> Φοιτητής: [δεν ακούγεται] όταν τελειώσετε. 127 00:04:47,510 --> 00:04:48,051 >> ALLISON: Σσσς. 128 00:04:48,051 --> 00:04:49,380 129 00:04:49,380 --> 00:04:50,910 Και στη συνέχεια η τελευταία. 130 00:04:50,910 --> 00:04:52,000 Ποιος θέλει να απαντήσει; 131 00:04:52,000 --> 00:04:52,744 Ακριβώς εκεί. 132 00:04:52,744 --> 00:04:54,480 >> Φοιτητής: 11100. 133 00:04:54,480 --> 00:04:56,820 >> ALLISON: 11100, κοίτα. 134 00:04:56,820 --> 00:04:58,790 Συγχαρητήρια, καλή δουλειά, ο καθένας. 135 00:04:58,790 --> 00:05:03,370 Εντάξει, ο καθένας το είδος των κατανοήσουν η διαδικασία για να γίνει αυτό; 136 00:05:03,370 --> 00:05:08,700 Έχετε, πηγαίνει από το δυαδικό στο δεκαδικό ο τρόπος που έχω την τάση να το κάνει, γράφει έξω 137 00:05:08,700 --> 00:05:09,920 οι δυνάμεις του 2. 138 00:05:09,920 --> 00:05:18,350 Έτσι λέω, εντάξει, 0 φορές 2-0, έτσι ότι είναι 0, 1 2 φορές με το πρώτο, 139 00:05:18,350 --> 00:05:21,400 είναι 2 πηγαίνει μετά με αυτόν τον τρόπο. 140 00:05:21,400 --> 00:05:25,790 Υπάρχει κάποιος που θέλεις να ρητώς πάει μέσα από ένα παράδειγμα της δυαδικής; 141 00:05:25,790 --> 00:05:26,840 142 00:05:26,840 --> 00:05:28,140 Εντάξει, δροσερό. 143 00:05:28,140 --> 00:05:30,390 >> Δεκαδικό σε δυαδική είναι πολύ παρόμοια. 144 00:05:30,390 --> 00:05:31,550 145 00:05:31,550 --> 00:05:33,630 Τείνω να γράψουν τις δυνάμεις του 2. 146 00:05:33,630 --> 00:05:38,660 Ξεκινήστε με το ένα που είναι η μεγαλύτερη, αλλά δεν πάει παρελθόν το δεκαδικό 147 00:05:38,660 --> 00:05:39,710 ότι ψάχνετε. 148 00:05:39,710 --> 00:05:42,870 Και στη συνέχεια το είδος του έργο το δρόμο σας πίσω πρόσθεση πράγματα όπως είναι απαραίτητο. 149 00:05:42,870 --> 00:05:45,200 >> Και στη συνέχεια με την προσθήκη, είναι ακριβώς όπως το κανονικό προσθήκη. 150 00:05:45,200 --> 00:05:51,110 Αν έχετε ποτέ την περίπτωση που είστε προσθέτοντας δύο 1s, καθίσταται προφανές 2. 151 00:05:51,110 --> 00:05:56,875 2 στο δυαδικό είναι τώρα 1 0 έτσι πρέπει να φέρει σας 1 στην επόμενη στήλη. 152 00:05:56,875 --> 00:05:57,375 Cool. 153 00:05:57,375 --> 00:05:59,220 154 00:05:59,220 --> 00:06:03,240 >> Δεκαεξαδικό, αυτό θα μπορούσε να είναι κάτι ότι είναι ελαφρώς λιγότερο εξοικειωμένοι. 155 00:06:03,240 --> 00:06:06,600 Έτσι, όπως ο Rob ήταν απλά μου έλεγε εκ των προτέρων, το τέχνασμα του γι 'αυτό 156 00:06:06,600 --> 00:06:10,210 είναι να χωριστεί ακριβώς επάνω σε τέσσερα κομμάτια byte, εντάξει; 157 00:06:10,210 --> 00:06:11,050 Bits, συγγνώμη. 158 00:06:11,050 --> 00:06:11,720 Βλέπε; 159 00:06:11,720 --> 00:06:12,220 Χάρη Rob. 160 00:06:12,220 --> 00:06:15,874 Αυτός είναι ο λόγος που είστε εδώ. [NOISE] Εντάξει, γι 'αυτό ακριβώς το σπάσει επάνω 161 00:06:15,874 --> 00:06:16,790 σε τέσσερα δυαδικά ψηφία κομμάτια. 162 00:06:16,790 --> 00:06:21,570 Έτσι, με εκτελέσιμα σε δεκαεξαδικό, κοιτάμε το πρώτο 4, 163 00:06:21,570 --> 00:06:25,573 η οποία είναι αν έχουμε τέσσερις 1s σε μια σειρά, τι αριθμό έχει ότι συμβολίζουν; 164 00:06:25,573 --> 00:06:26,540 >> ΜΑΘΗΤΗ: ΣΤ 165 00:06:26,540 --> 00:06:32,751 >> ALLISON: Έτσι, στην περίπτωση αυτή, τι είναι 11111111 or-- ναι; 166 00:06:32,751 --> 00:06:33,250 Φοιτητής: FF. 167 00:06:33,250 --> 00:06:34,600 ALLISON: Τέλεια, FF. 168 00:06:34,600 --> 00:06:36,900 Τόσο μεγάλη, καραμέλα για εσάς. 169 00:06:36,900 --> 00:06:41,100 Τώρα, για το πώς δεκαεξαδικό σε δυαδικό, εμείς απλά σκεφτείτε το είδος της σε αντίστροφη. 170 00:06:41,100 --> 00:06:46,420 Για κάθε αριθμό ή γράμμα που έχουμε σε δεκαεξαδική μας, 171 00:06:46,420 --> 00:06:53,930 απλά να το μετατρέψετε σε τέσσερις κομμάτι της [Γελάει] με τη μετατροπή των τεσσάρων δυαδικών του. 172 00:06:53,930 --> 00:06:58,696 Έτσι, 5, σε αυτή την περίπτωση, αυτό που είναι 5 αν είμαστε αυτό που αντιπροσωπεύει με τέσσερα κομμάτια; 173 00:06:58,696 --> 00:06:59,608 >> Φοιτητής: 010; 174 00:06:59,608 --> 00:07:00,520 MM-HM. 175 00:07:00,520 --> 00:07:03,605 Και τότε το Α, η οποία είναι στην πραγματικότητα 10, θα ήταν; 176 00:07:03,605 --> 00:07:06,230 177 00:07:06,230 --> 00:07:08,040 1010. 178 00:07:08,040 --> 00:07:09,670 Έτσι έχουμε ότι, εδώ. 179 00:07:09,670 --> 00:07:13,990 Έτσι μετατροπή μεταξύ δεκαεξαδικό και δυαδική δεν είναι πραγματικά τόσο άσχημα. 180 00:07:13,990 --> 00:07:16,565 Αν κοιτάξετε σε τέσσερα bit κομμάτια, πρόκειται να είναι χρυσή. 181 00:07:16,565 --> 00:07:18,330 182 00:07:18,330 --> 00:07:19,300 Everyone-- ναι; 183 00:07:19,300 --> 00:07:21,903 >> ROB: Αυτό είναι ανόητο, αλλά θυμάμαι πάντα 184 00:07:21,903 --> 00:07:23,500 Α, δεδομένου του Α υποτίθεται ότι είναι 10. 185 00:07:23,500 --> 00:07:26,230 Και δυαδικό είναι μόνο 10 10, so-- 186 00:07:26,230 --> 00:07:27,310 >> ALLISON: Αχ, εκεί θα πάμε. 187 00:07:27,310 --> 00:07:28,615 >> ROB: Γεια σου. 188 00:07:28,615 --> 00:07:30,020 >> ALLISON: Γεια σου, καραμέλα για τον Rob. 189 00:07:30,020 --> 00:07:31,707 190 00:07:31,707 --> 00:07:33,290 Υπάρχει πράγματα μη-σοκολάτα εκεί. 191 00:07:33,290 --> 00:07:34,180 Έτσι, μπορείτε να έχετε κάποια. 192 00:07:34,180 --> 00:07:35,790 193 00:07:35,790 --> 00:07:36,760 Έτσι ASCII μαθηματικά. 194 00:07:36,760 --> 00:07:38,206 195 00:07:38,206 --> 00:07:38,705 Συμπεριφερθείτε. 196 00:07:38,705 --> 00:07:40,630 197 00:07:40,630 --> 00:07:44,720 Έτσι ASCII μαθηματικά, όπως εσείς ίσως και να θυμάστε 198 00:07:44,720 --> 00:07:48,480 p που 2 με Visioneer και Καίσαρα, που έκανε πολλή αυτό. 199 00:07:48,480 --> 00:07:49,610 200 00:07:49,610 --> 00:07:51,980 Θυμηθείτε, οι χαρακτήρες είναι ουσιαστικά μόνο αριθμούς. 201 00:07:51,980 --> 00:07:54,780 Έτσι, μπορούμε να κάνουμε μαθηματικά με αυτά, όπως ακριβώς κάνουμε μαθηματικά με ints. 202 00:07:54,780 --> 00:07:58,090 >> Έτσι έχουμε λίγο απλό πράγμα εδώ. 203 00:07:58,090 --> 00:08:00,940 Έχουμε κάποια στο Α που είναι αρχικοποιείται σε 65. 204 00:08:00,940 --> 00:08:07,440 Και Β ίση με την τιμή ASCII του Α συν 1, char C ίσο με D μείον 1, 205 00:08:07,440 --> 00:08:09,060 και χαρα D ίσο με 68. 206 00:08:09,060 --> 00:08:13,130 Μέχρι τότε θα πρόκειται για εκτύπωση όλα αυτά, όπως βλέπουμε εδώ. 207 00:08:13,130 --> 00:08:15,650 Και μπορεί κανείς να μου πει τι αυτό θα εκτυπώσετε; 208 00:08:15,650 --> 00:08:17,335 209 00:08:17,335 --> 00:08:18,210 Φοιτητής: [δεν ακούγεται]. 210 00:08:18,210 --> 00:08:20,540 ALLISON: Ακριβώς, έτσι ένα πράγμα που πρέπει να παρατηρήσετε είναι 211 00:08:20,540 --> 00:08:22,900 ότι είμαστε εκτύπωση χαρακτήρες κάθε φορά, εδώ. 212 00:08:22,900 --> 00:08:28,290 Είμαστε ορισμό παρόλο Α και Β είναι ints όταν τους ανακοινώνονται ανωτέρω. 213 00:08:28,290 --> 00:08:32,870 Είμαστε αυτά εκτυπώνονται σαν χαρακτήρες από το ποσοστό C και δήλωση printf μας, 214 00:08:32,870 --> 00:08:34,610 έτσι θα τυπώνει όλα ως χαρακτήρες. 215 00:08:34,610 --> 00:08:40,730 Και φυσικά, η τιμή ASCII 65 βούλησης εκτύπωση ως A. Η τιμή ASCII του Α συν 1 216 00:08:40,730 --> 00:08:43,669 θα είναι 66, η οποία θα περήφανοι για Β Έτσι, στην πραγματικότητα, εμείς 217 00:08:43,669 --> 00:08:49,107 πάρετε Α Β Γ Δ καθένας καλό εκεί; 218 00:08:49,107 --> 00:08:49,690 Οποιεσδήποτε ερωτήσεις; 219 00:08:49,690 --> 00:08:50,721 220 00:08:50,721 --> 00:08:51,220 Awesome. 221 00:08:51,220 --> 00:08:52,500 222 00:08:52,500 --> 00:08:53,455 >> Εντάξει, το πεδίο εφαρμογής. 223 00:08:53,455 --> 00:08:55,090 224 00:08:55,090 --> 00:08:59,950 Έτσι, το πεδίο εφαρμογής είναι προφανώς ένα πολύ σημαντικό πράγμα που πρέπει να κατανοήσουμε, εδώ. 225 00:08:59,950 --> 00:09:03,250 Πολλοί από εσάς, αν έχουν σύνταξη λάθη, 226 00:09:03,250 --> 00:09:06,085 και λέει ότι δεν έχετε πρόσβαση σε κάποια μεταβλητή, 227 00:09:06,085 --> 00:09:08,540 είναι πιθανώς επειδή σας ορίζεται εντός ενός βρόχου 228 00:09:08,540 --> 00:09:12,210 και στη συνέχεια προσπάθησε να αποκτήσετε πρόσβαση έξω από αυτό, ή το αντίστροφο. 229 00:09:12,210 --> 00:09:16,410 >> Έτσι πεδίο στον πυρήνα της, καθορίζει ακριβώς όπου 230 00:09:16,410 --> 00:09:20,800 λέμε μια μεταβλητή υπάρχει, όπου μπορεί να το αλλάξει, όπου μπορούν να έχουν πρόσβαση. 231 00:09:20,800 --> 00:09:24,550 Είναι ακριβώς το είδος του λέγοντας ότι αυτά είναι τα μόνα μέρη όπου έχετε πρόσβαση 232 00:09:24,550 --> 00:09:26,060 σε αυτή τη μεταβλητή. 233 00:09:26,060 --> 00:09:30,080 >> Έτσι, τα δύο πεδία για τα οποία μιλάμε κατά τη διάρκεια της κατηγορίας είναι παγκόσμιο και τοπικό. 234 00:09:30,080 --> 00:09:35,080 Έτσι παγκόσμιες μεταβλητές μιλάμε για όταν αυτά καθορίζουν πάνω από την κύρια. 235 00:09:35,080 --> 00:09:38,390 Αυτό σημαίνει ότι ολόκληρη η σας το πρόγραμμα έχει πρόσβαση σε αυτό, 236 00:09:38,390 --> 00:09:42,090 και υπάρχει για όσο χρονικό διάστημα καθώς τρέχει το πρόγραμμα, εντάξει; 237 00:09:42,090 --> 00:09:45,100 Τοπικές σημαίνει ότι είναι περισσότερο περιορίζονται σε μια περιοχή. 238 00:09:45,100 --> 00:09:50,520 Έτσι, κάθε φορά που έχουν ειδικές λειτουργίες όπως swap, μιλάμε πάντα για. 239 00:09:50,520 --> 00:09:54,380 Πάντα μιλάμε για το swap με την Α και Β Α και Β υπάρχουν μέσα σε αυτή την λειτουργία. 240 00:09:54,380 --> 00:09:55,690 Δεν υπάρχουν πουθενά αλλού. 241 00:09:55,690 --> 00:09:56,860 242 00:09:56,860 --> 00:10:00,610 >> Όπως επίσης, όταν έχετε αν δηλώσεις ή για βρόχους. 243 00:10:00,610 --> 00:10:04,670 Όποτε έχουμε, για παράδειγμα, σε ένα για το βρόχο έχουμε int i ισούται με 0. 244 00:10:04,670 --> 00:10:06,630 Έχουμε κάποια κατάσταση και εμείς να το ενημερώσετε. 245 00:10:06,630 --> 00:10:10,270 Υπάρχει μόνον εντός της τιράντες του ότι για βρόχο. 246 00:10:10,270 --> 00:10:13,270 Αν προσπαθήσετε να αποκτήσετε πρόσβαση αλλού, compiler σας θα φωνάζω σε σας. 247 00:10:13,270 --> 00:10:14,560 Θα ήθελα να είναι σαν, τι προσπαθείτε να κάνετε; 248 00:10:14,560 --> 00:10:15,400 Αυτό δεν υπάρχει. 249 00:10:15,400 --> 00:10:16,644 250 00:10:16,644 --> 00:10:18,435 Έτσι, αυτό είναι το δύο διαφορετικοί τύποι του πεδίου εφαρμογής. 251 00:10:18,435 --> 00:10:19,486 252 00:10:19,486 --> 00:10:20,860 Μήπως αυτό έχει νόημα για όλους; 253 00:10:20,860 --> 00:10:23,870 254 00:10:23,870 --> 00:10:27,890 >> Έτσι, για παράδειγμα εδώ, αυτό είναι μερικά μόνο από απλό πρόγραμμα. 255 00:10:27,890 --> 00:10:29,120 256 00:10:29,120 --> 00:10:32,890 Τι πιστεύετε εσείς είναι πρόκειται να συμβεί σε κάθε σημείο 257 00:10:32,890 --> 00:10:34,210 ότι προσπαθούμε να εκτυπώσετε; 258 00:10:34,210 --> 00:10:40,150 Έτσι, αυτό το ένα εδώ, τι πρόκειται να συμβεί; 259 00:10:40,150 --> 00:10:43,047 260 00:10:43,047 --> 00:10:44,255 Φοιτητής: Θα εκτυπώσει τρεις. 261 00:10:44,255 --> 00:10:44,880 ALLISON: Δεξιά. 262 00:10:44,880 --> 00:10:45,930 Θα εκτυπώσετε τρεις. 263 00:10:45,930 --> 00:10:47,272 Τι γίνεται εδώ; 264 00:10:47,272 --> 00:10:48,230 Φοιτητής: Δεν θα λειτουργήσει. 265 00:10:48,230 --> 00:10:48,910 ALLISON: Δεν θα λειτουργήσει. 266 00:10:48,910 --> 00:10:50,290 Είσαι έξω από το πεδίο εφαρμογής, σωστά; 267 00:10:50,290 --> 00:10:55,160 Τοπική μεταβλητή δεν υπάρχει έξω από αυτά τα σιδεράκια, εντάξει; 268 00:10:55,160 --> 00:10:56,462 Και τότε τι γίνεται εδώ; 269 00:10:56,462 --> 00:10:57,850 >> Φοιτητής: [δεν ακούγεται]. 270 00:10:57,850 --> 00:10:59,210 >> ALLISON: Τι; 271 00:10:59,210 --> 00:10:59,900 Rob, πάμε. 272 00:10:59,900 --> 00:11:00,854 >> ROB: μόλις είπα. 273 00:11:00,854 --> 00:11:04,200 Παγκόσμια μεταβλητές πρέπει να είναι παγκόσμια μεταβλητή υπογράμμισης. 274 00:11:04,200 --> 00:11:05,660 >> ALLISON: Αχ, ναι, συγγνώμη. 275 00:11:05,660 --> 00:11:06,200 Ευχαριστώ, Rob. 276 00:11:06,200 --> 00:11:07,480 277 00:11:07,480 --> 00:11:10,170 Του Rob σαν κάτοικος compiler μας. 278 00:11:10,170 --> 00:11:12,684 Αυτός θα φωνάζω μόνο σε εμάς, όταν εμείς χρειάζονται. [Γελάει] Ναι, ότι 279 00:11:12,684 --> 00:11:14,225 θα πρέπει να είναι καθολική μεταβλητή υπογράμμισης. 280 00:11:14,225 --> 00:11:15,760 281 00:11:15,760 --> 00:11:18,430 Έτσι, αν υποτεθεί ότι ήταν παγκόσμια υπογράμμισης 282 00:11:18,430 --> 00:11:20,260 μεταβλητή, τι πρόκειται να συμβεί εδώ; 283 00:11:20,260 --> 00:11:21,260 Φοιτητής: Αυτό θα λειτουργήσει. 284 00:11:21,260 --> 00:11:22,093 ALLISON: Θα λειτουργήσει. 285 00:11:22,093 --> 00:11:24,655 Έτσι θα εκτυπώσετε, έτσι απλά ένα πολύ απλό παράδειγμα. 286 00:11:24,655 --> 00:11:27,650 287 00:11:27,650 --> 00:11:29,870 ΟΚ, πρωτότυπα. 288 00:11:29,870 --> 00:11:33,680 Έτσι, προφανώς, είμαστε πραγματικά τονίζουν για σας παιδιά 289 00:11:33,680 --> 00:11:36,460 για να κάνει τις λειτουργίες εάν νόημα στα προγράμματά σας. 290 00:11:36,460 --> 00:11:38,460 Αλλά φυσικά, όταν κάνουν τη δική σας λειτουργίες, 291 00:11:38,460 --> 00:11:40,930 συνήθως θα τους καθορίσει μετά από κύριο. 292 00:11:40,930 --> 00:11:42,430 Και θα προσπαθήσουμε να τους καλέσει σε κύρια. 293 00:11:42,430 --> 00:11:46,030 Και αν δεν θέλετε να χρησιμοποιήσετε ένα πρωτότυπο, compiler σας θα φωνάζω σε σας. 294 00:11:46,030 --> 00:11:49,590 >> Πρωτότυπο είναι βασικά απλά λέει compiler σας 295 00:11:49,590 --> 00:11:52,400 ότι έχω αυτή τη λειτουργία κάτω από τον κύριο. 296 00:11:52,400 --> 00:11:54,970 Πάω να το ονομάσουμε πριν την ορίζουν. 297 00:11:54,970 --> 00:11:56,360 Απλά κρατήστε την. 298 00:11:56,360 --> 00:12:00,660 Υπόσχομαι ότι έχει οριστεί, και σας θα έχει όλα όσα χρειάζεστε. 299 00:12:00,660 --> 00:12:05,900 >> Έτσι, ο τρόπος που το κάνουμε είναι απλά επιστροφή σας τύπο, το όνομα σας λειτουργία, είσοδος σας 300 00:12:05,900 --> 00:12:06,400 λίστα. 301 00:12:06,400 --> 00:12:09,760 Είναι ουσιαστικά η πρώτη γραμμή της δήλωσης λειτουργία σας. 302 00:12:09,760 --> 00:12:11,510 Είναι πραγματικά όλα είναι. 303 00:12:11,510 --> 00:12:14,440 Αλλά αυτό είναι μόνο ένα γενικά το είδος της μορφής. 304 00:12:14,440 --> 00:12:17,220 >> Έτσι, στο παράδειγμα μας εδώ, οποία εσείς πρέπει να 305 00:12:17,220 --> 00:12:19,700 έχουν δει στο τμήμα σε κάποιο σημείο, έχουμε 306 00:12:19,700 --> 00:12:23,220 κάποια κύβος int ότι παίρνει κάποια int της εισόδου. 307 00:12:23,220 --> 00:12:25,870 Και έχουμε κύρια μας λειτουργίας, η οποία καλεί κύβο. 308 00:12:25,870 --> 00:12:28,670 Και κύβος ορίζεται μετά από το γεγονός. 309 00:12:28,670 --> 00:12:34,450 >> Έτσι, αν δεν είχαμε εισόδου int κύβος στην κορυφή, όταν καλέσαμε κύβος 310 00:12:34,450 --> 00:12:36,620 στο κύριο, compiler μας θα πάρει τρελλός σε μας. 311 00:12:36,620 --> 00:12:38,890 Θα ήθελα να είναι σαν, τι είναι αυτά που λες; 312 00:12:38,890 --> 00:12:40,360 Cube δεν υπάρχει. 313 00:12:40,360 --> 00:12:41,910 Δεν ξέρω τι ζητάτε. 314 00:12:41,910 --> 00:12:43,490 Και είμαι απλώς πρόκειται στάση. 315 00:12:43,490 --> 00:12:47,330 >> Αλλά επειδή κάναμε πρωτότυπο μας στην κορυφή, έχουμε πει, 316 00:12:47,330 --> 00:12:49,800 Ξέρετε, όταν βλέπετε κύβος, μην ανησυχείτε γι 'αυτό. 317 00:12:49,800 --> 00:12:51,990 Υπόσχομαι ότι έχει οριστεί αργότερα. 318 00:12:51,990 --> 00:12:53,750 Και αυτό θα σας αφήσει να κάνετε ό, τι θέλετε. 319 00:12:53,750 --> 00:12:57,750 Έτσι, αν έχετε ποτέ μια λειτουργία που έχει δηλωθεί μετά το ονομάζετε 320 00:12:57,750 --> 00:13:00,570 για πρώτη φορά, θα πρέπει να έχουν το prototyped στην κορυφή. 321 00:13:00,570 --> 00:13:01,640 322 00:13:01,640 --> 00:13:02,720 >> Ναι; 323 00:13:02,720 --> 00:13:04,412 >> ROB: Είναι τετράγωνο, δεν cubing. 324 00:13:04,412 --> 00:13:05,855 >> ALLISON: Θεέ μου. 325 00:13:05,855 --> 00:13:09,435 Δεν είχα have-- Gabe, σκέφτηκα θα ήταν διορθωτής μας. 326 00:13:09,435 --> 00:13:10,740 327 00:13:10,740 --> 00:13:12,760 Εντάξει ρε παιδιά, να φέρει μαζί μου, εδώ. 328 00:13:12,760 --> 00:13:14,440 Ελπίζω ότι ο καθένας παίρνει την ιδέα. 329 00:13:14,440 --> 00:13:15,560 330 00:13:15,560 --> 00:13:20,380 Εντάξει, έτσι αυτό θα πρέπει να έχουν έχουν τετράγωνο, όχι κομμένο σε κύβους. 331 00:13:20,380 --> 00:13:22,700 Αλλά η ιδέα παραμένει η ίδια. 332 00:13:22,700 --> 00:13:23,702 333 00:13:23,702 --> 00:13:26,660 Κάθε λειτουργία που εμείς την αποκαλούμε μετά το γεγονός θα πρέπει να έχει ένα πρωτότυπο. 334 00:13:26,660 --> 00:13:27,730 335 00:13:27,730 --> 00:13:28,970 Όλοι καλό με αυτό; 336 00:13:28,970 --> 00:13:30,730 337 00:13:30,730 --> 00:13:32,310 Οποιαδήποτε άλλα λάθη; 338 00:13:32,310 --> 00:13:32,810 ΟΚ. 339 00:13:32,810 --> 00:13:34,730 340 00:13:34,730 --> 00:13:36,230 Τυχόν λάθη εδώ πριν αρχίσουμε, Rob; 341 00:13:36,230 --> 00:13:37,356 342 00:13:37,356 --> 00:13:42,380 [Γέλια] Εντάξει, έτσι structs. 343 00:13:42,380 --> 00:13:45,040 Βασικά, structs σας επιτρέπουν για να δημιουργήσετε το δικό σας τύπο δεδομένων. 344 00:13:45,040 --> 00:13:49,264 Τόσο πολύ σαν int ή char ή ένα πλωτήρα, είναι ακριβώς ένας άλλος τύπος. 345 00:13:49,264 --> 00:13:51,680 Μου αρέσει να σκέφτομαι όπως, όπως, δημιουργήσετε το δικό σας τύπο δεδομένων. 346 00:13:51,680 --> 00:13:53,740 Έτσι θα επιτρέπει να το κάνουμε αυτό. 347 00:13:53,740 --> 00:13:56,160 Και κατέχει διαφορετικούς τύπους δεδομένων. 348 00:13:56,160 --> 00:14:01,030 >> Έτσι, αν θυμάστε, σε μια σειρά, θα μπορεί να κρατήσει μόνο τα πράγματα παρόμοιου τύπου. 349 00:14:01,030 --> 00:14:04,660 Structs μας επιτρέπουν να κατέχουν πολλαπλές πράγματα διαφορετικών τύπων. 350 00:14:04,660 --> 00:14:08,944 Έτσι, σε αυτή την περίπτωση εδώ, εμείς έχουν ένα struct που ονομάζεται Student, 351 00:14:08,944 --> 00:14:10,650 ονομάζεται εδώ στο κάτω μέρος. 352 00:14:10,650 --> 00:14:13,540 Και έχουμε κάποια id int και μερικοί όνομα συμβολοσειράς. 353 00:14:13,540 --> 00:14:14,620 354 00:14:14,620 --> 00:14:17,300 Έτσι, αυτό είναι απλά ένας άλλος τύπος δεδομένων. 355 00:14:17,300 --> 00:14:18,950 Έχουμε τώρα έναν τύπο δεδομένων που ονομάζεται Student. 356 00:14:18,950 --> 00:14:20,330 357 00:14:20,330 --> 00:14:24,750 >> Έτσι, γιατί μπορούμε να σκεφτούμε ως απλά έναν άλλο τύπο δεδομένων, 358 00:14:24,750 --> 00:14:27,760 μπορούμε να δηλώσουμε μεταβλητές όπως θα κάνατε με οποιοδήποτε άλλο. 359 00:14:27,760 --> 00:14:32,680 Έτσι, αντί να έχουμε, όπως, ένα int φοιτητής, έχουμε μόνο έναν μαθητή, 360 00:14:32,680 --> 00:14:33,390 φοιτητής 1. 361 00:14:33,390 --> 00:14:33,560 Ω, κοιτάξτε. 362 00:14:33,560 --> 00:14:34,059 Είναι Rob. 363 00:14:34,059 --> 00:14:35,750 364 00:14:35,750 --> 00:14:38,880 Έτσι, εδώ είμαστε δηλώνοντας ένα struct, ή μια μεταβλητή 365 00:14:38,880 --> 00:14:40,940 ονομάζεται φοιτητής 1 του μαθητή τύπου. 366 00:14:40,940 --> 00:14:45,370 Έτσι, πρόκειται να έχετε ένα αναγνωριστικό και το όνομα που συνδέονται με αυτό. 367 00:14:45,370 --> 00:14:48,430 >> Και ο τρόπος που έχουν πρόσβαση σε αυτά στοιχεία μέσα struct μας 368 00:14:48,430 --> 00:14:50,100 είναι με το χειριστή τελεία, εδώ. 369 00:14:50,100 --> 00:14:51,910 370 00:14:51,910 --> 00:14:54,660 Έτσι, σε αυτή την περίπτωση, έχουμε δηλωθεί κάποια φοιτητής 1. 371 00:14:54,660 --> 00:14:57,080 Εμείς ανατεθεί το αναγνωριστικό για να είναι 1. 372 00:14:57,080 --> 00:14:58,840 Και εμείς ανατεθεί το όνομα να είναι ο Rob. 373 00:14:58,840 --> 00:15:03,010 374 00:15:03,010 --> 00:15:04,960 Εντάξει, ο καθένας καλό με αυτό; 375 00:15:04,960 --> 00:15:06,787 Χρησιμοποιήστε το like-- απλά ναι; 376 00:15:06,787 --> 00:15:09,530 >> Φοιτητής: Ναι, όταν typedef-- χρειαζόμαστε να χρησιμοποιήσετε typedef; 377 00:15:09,530 --> 00:15:13,190 >> ALLISON: Έτσι ακριβώς typedef λέει that-- Rob, μπορείτε 378 00:15:13,190 --> 00:15:16,990 μπορεί να με διορθώσει σε αυτό, αν είμαι wrong-- αλλά είναι typedef ακριβώς πραγματικά δηλώνοντας 379 00:15:16,990 --> 00:15:19,330 ως ένα είδος που μπορείτε να χρησιμοποιήσετε, σωστά; 380 00:15:19,330 --> 00:15:22,550 >> ROB: Ναι, είναι βασικά, έτσι είναι ακριβώς η δημιουργία 381 00:15:22,550 --> 00:15:24,215 ένα ψευδώνυμο ή ένα ψευδώνυμο για έναν τύπο. 382 00:15:24,215 --> 00:15:25,590 Έτσι, μπορείτε να γράψετε ότι [δεν ακούγεται]. 383 00:15:25,590 --> 00:15:27,140 384 00:15:27,140 --> 00:15:30,350 Έτσι, [δεν ακούγεται] υπάρχει, και τώρα έχουμε μόνο 385 00:15:30,350 --> 00:15:32,090 [Δεν ακούγεται] μέσα ακριβώς το ίδιο πράγμα. 386 00:15:32,090 --> 00:15:37,210 Και έτσι εδώ, είμαστε δακτυλογραφημένες, νομίζω, κάποια struct τύπου 2 [δεν ακούγεται]. 387 00:15:37,210 --> 00:15:40,680 Έτσι είναι μόνο ένα ψευδώνυμο για ένα δεδομένο τύπο. 388 00:15:40,680 --> 00:15:44,344 >> ΜΑΘΗΤΗ: String [δεν ακούγεται] βιβλιοθήκη δακτυλογραφήθηκε σαν char αστέρων. 389 00:15:44,344 --> 00:15:51,380 390 00:15:51,380 --> 00:15:54,390 >> ALLISON: Για τους σκοπούς μας εδώ, εάν είστε με την οποία μια struct, 391 00:15:54,390 --> 00:15:55,600 ακριβώς κάνει typedef struct. 392 00:15:55,600 --> 00:15:57,680 393 00:15:57,680 --> 00:16:04,490 Εντάξει, τόσο εκ των προτέρων, αυτό είναι απλά μια κανονική μεταβλητή εδώ. 394 00:16:04,490 --> 00:16:06,390 Έχουμε πρόσβαση σε αυτό με μια τελεία. 395 00:16:06,390 --> 00:16:08,580 αν έχουμε ένα δείκτη για να ένα struct, μπορούμε πραγματικά 396 00:16:08,580 --> 00:16:10,700 χρησιμοποιήστε ένα βέλος, το οποίο είναι αρκετά δροσερό. 397 00:16:10,700 --> 00:16:17,130 >> Έτσι, σε αυτή την περίπτωση, έχουμε ένα δείκτη για να ένας φοιτητής 1 που είναι φοιτητής τύπου. 398 00:16:17,130 --> 00:16:19,020 Θυμηθείτε, με τη δική σας κατασκευή του δείκτη, 399 00:16:19,020 --> 00:16:23,710 θέλετε ό, τι πληκτρολογείτε το δείκτη σας δείχνει να είναι στην αρχή. 400 00:16:23,710 --> 00:16:25,960 Έτσι έχουμε κάποιο μαθητή 1, εδώ. 401 00:16:25,960 --> 00:16:27,370 402 00:16:27,370 --> 00:16:31,050 Και επειδή αυτός ο μαθητής 1 είναι τώρα ένα μυτερό, 403 00:16:31,050 --> 00:16:36,520 μπορούμε να πάμε πραγματικά φοιτητής όνομα 1 βέλος αντί για τελεία, γιατί είναι ένας δείκτης, 404 00:16:36,520 --> 00:16:37,640 και να ορίσετε τον Rob. 405 00:16:37,640 --> 00:16:40,720 Και τώρα, αν θέλουμε να αλλάξετε τον Rob να Davin, 406 00:16:40,720 --> 00:16:43,570 Αυτό είναι απλά δείχνοντάς σας ένας διαφορετικός τρόπος για να το κάνουμε. 407 00:16:43,570 --> 00:16:48,850 >> Έτσι, αντί της χρησιμοποιώντας το βέλος, μπορείτε μπορεί also-- Θα τελειώσω αυτό και, στη συνέχεια, 408 00:16:48,850 --> 00:16:52,860 λάβει ότι question-- θα μπορούσατε Επίσης, κάνει φοιτητής αναφοράς 1. 409 00:16:52,860 --> 00:16:56,170 Αυτό λέει, όπως πάει να ό, τι είναι στο μαθητή 1, η οποία 410 00:16:56,170 --> 00:16:58,840 θα ήταν φοιτητής struct μας. 411 00:16:58,840 --> 00:17:03,910 Δείτε το με μια τελεία και το στοιχείο ότι θέλετε, και στη συνέχεια να εκχωρήσετε εκ νέου. 412 00:17:03,910 --> 00:17:05,326 Υπήρχε ένα ερώτημα. 413 00:17:05,326 --> 00:17:08,034 Φοιτητής: Ναι, ναι, πώς έρχονται έχετε να χρησιμοποιήσει [δεν ακούγεται] όταν είστε 414 00:17:08,034 --> 00:17:10,367 κάνει αστέρων φοιτητής χωρίς [Δεν ακούγεται] φοιτητή; 415 00:17:10,367 --> 00:17:12,200 ALLISON: Επειδή αυτό είναι η δημιουργία ενός δείκτη. 416 00:17:12,200 --> 00:17:13,616 ROB: Εμείς πάμε να μιλήσουμε γι 'αυτό. 417 00:17:13,616 --> 00:17:16,119 ALLISON: Εμείς πάμε να μιλήσουμε γι 'αυτό αργότερα στην αναθεώρηση. 418 00:17:16,119 --> 00:17:17,660 Έτσι απλά να κρατήσουν αυτή τη σκέψη. 419 00:17:17,660 --> 00:17:20,560 Αν εξακολουθεί να σας ενοχλεί το τέλος, έρχονται να μιλήσετε με έναν από εμάς. 420 00:17:20,560 --> 00:17:23,380 >> Έτσι, αυτοί κάνουν ακριβώς το ίδιο πράγμα. 421 00:17:23,380 --> 00:17:25,579 Είμαστε ακριβώς σας δείχνει δύο διαφορετικούς τρόπους για να το κάνει. 422 00:17:25,579 --> 00:17:29,470 Φοιτητής 1 είναι τώρα ένας δείκτης, τόσο μπορείτε να αποκτήσετε πρόσβαση στο στοιχείο Όνομα 423 00:17:29,470 --> 00:17:30,960 εντός του struct με ένα βέλος. 424 00:17:30,960 --> 00:17:36,440 Ή μπορείτε να dereference δείκτη σας, και τότε πρόσβαση, όπως θα κάνατε κανονικά. 425 00:17:36,440 --> 00:17:38,430 Μήπως αυτό έχει νόημα σε κάθε μία; 426 00:17:38,430 --> 00:17:39,480 427 00:17:39,480 --> 00:17:43,890 Αν το σύνολο δείκτη πράγματα είναι λίγο σύγχυση, Gabe θα μιλήσουμε γι 'αυτό, 428 00:17:43,890 --> 00:17:45,740 και τότε ίσως αυτό θα έχει περισσότερο νόημα. 429 00:17:45,740 --> 00:17:46,240 Ναι; 430 00:17:46,240 --> 00:17:48,387 >> Φοιτητής: Ναι, ναι, πώς είναι Αυτό διαφέρει από το; 431 00:17:48,387 --> 00:17:49,470 ALLISON: Η προηγούμενη; 432 00:17:49,470 --> 00:17:52,330 Έτσι, ο φοιτητής 1 σε αυτό περίπτωση δεν είναι ένας δείκτης. 433 00:17:52,330 --> 00:17:54,380 Είναι απλά πραγματική struct σας. 434 00:17:54,380 --> 00:17:55,400 >> Φοιτητής: Εντάξει. 435 00:17:55,400 --> 00:17:57,645 >> ALLISON: Ενώ αυτό είναι ένας δείκτης σε μια struct. 436 00:17:57,645 --> 00:17:58,910 437 00:17:58,910 --> 00:18:02,060 >> Φοιτητής: Εντάξει, αλλά το κάνει το είδος του καταλήγουν να εργάζονται το ίδιο [δεν ακούγεται]. 438 00:18:02,060 --> 00:18:03,310 >> ALLISON: Λειτουργεί αποτελεσματικά η ίδια. 439 00:18:03,310 --> 00:18:04,560 Σύνταξη σας είναι απλά διαφορετική. 440 00:18:04,560 --> 00:18:05,185 Φοιτητής: Εντάξει. 441 00:18:05,185 --> 00:18:07,600 >> ALLISON: Ναι, είναι ουσιαστικά η ίδια. 442 00:18:07,600 --> 00:18:11,321 Είναι ακριβώς ανάλογα με τα συμφραζόμενα, μπορεί να θέλετε ένα πάνω στο άλλο. 443 00:18:11,321 --> 00:18:11,820 Ναι; 444 00:18:11,820 --> 00:18:13,956 >> Φοιτητής: Όταν το κάνετε αναφορές με την 1-- 445 00:18:13,956 --> 00:18:14,580 ALLISON: MM-hm; 446 00:18:14,580 --> 00:18:16,880 Φοιτητής: Γιατί το κάνετε έχουν τις παρενθέσεις; 447 00:18:16,880 --> 00:18:19,575 ALLISON: Επειδή φοιτητής 1 είναι ο δείκτης. 448 00:18:19,575 --> 00:18:22,200 Έτσι, θα πρέπει να βεβαιωθείτε ότι είστε απλά εύρεση τιμών του δείκτη. 449 00:18:22,200 --> 00:18:23,380 >> Φοιτητής: Εντάξει. 450 00:18:23,380 --> 00:18:26,700 >> ALLISON: Έτσι σε αυτήν την περίπτωση εδώ, οι παρενθέσεις γύρω από αυτό 451 00:18:26,700 --> 00:18:29,875 σημαίνει ότι είστε εύρεση τιμών φοιτητής 1. 452 00:18:29,875 --> 00:18:35,390 Έτσι θα πάμε εκεί φοιτητή 1 σημεία, τα οποία είναι struct σας. 453 00:18:35,390 --> 00:18:38,010 Έτσι τώρα μπορείτε να σκεφτείτε από αυτό ως το struct, 454 00:18:38,010 --> 00:18:39,785 έτσι μπορούμε να χρησιμοποιήσουμε την κανονική λειτουργία τελεία μας. 455 00:18:39,785 --> 00:18:42,752 456 00:18:42,752 --> 00:18:43,585 Οποιεσδήποτε άλλες ερωτήσεις; 457 00:18:43,585 --> 00:18:45,840 458 00:18:45,840 --> 00:18:48,120 Cool, φοβερό. 459 00:18:48,120 --> 00:18:51,359 >> Έτσι τελευταίο πράγμα, νομίζω είναι η τελευταία μου διαφάνεια, Woo! 460 00:18:51,359 --> 00:18:52,775 Εντάξει, έτσι κινητής υποδιαστολής ανακρίβεια. 461 00:18:52,775 --> 00:18:54,090 462 00:18:54,090 --> 00:18:56,820 Μιλήσαμε εν συντομία για αυτό κατά τη διάρκεια της διάλεξης. 463 00:18:56,820 --> 00:19:00,030 Βασικά, έχουμε απείρως πολλοί πραγματικοί αριθμοί. 464 00:19:00,030 --> 00:19:02,237 Και αν κάποιος από εσάς παιδιά αγαπούν τα μαθηματικά, υπάρχει 465 00:19:02,237 --> 00:19:03,570 όλα τα είδη των δροσερά πράγματα μαζί μας. 466 00:19:03,570 --> 00:19:05,010 467 00:19:05,010 --> 00:19:07,190 >> Αλλά υπάρχουν απείρως πολλοί πραγματικοί αριθμοί. 468 00:19:07,190 --> 00:19:09,850 Αλλά είναι μόνο πεπερασμένο πολλά κομμάτια που έχουμε. 469 00:19:09,850 --> 00:19:13,240 Έτσι είστε πάντα πρόκειται να έχουν ανακρίβεια, είναι όλα. 470 00:19:13,240 --> 00:19:16,269 Και αυτό είναι ότι είναι ακριβώς το είδος του σαν κάτι που πρέπει να γνωρίζετε. 471 00:19:16,269 --> 00:19:19,060 Αυτό, όπως μπορούμε να σας ρωτήσω γιατί το κάνει κινητής υποδιαστολής ανακρίβεια υπάρχουν; 472 00:19:19,060 --> 00:19:20,004 473 00:19:20,004 --> 00:19:21,420 Έτσι απλά κάτι που πρέπει να γνωρίζετε. 474 00:19:21,420 --> 00:19:23,770 Και με αυτό, είμαι στροφή το πάνω σε Δείκτες. 475 00:19:23,770 --> 00:19:27,720 476 00:19:27,720 --> 00:19:28,520 >> Binky: Γεια σας, παιδιά. 477 00:19:28,520 --> 00:19:29,616 Binky όνομά μου. 478 00:19:29,616 --> 00:19:30,990 Πάω να μιλήσω για τους δείκτες. 479 00:19:30,990 --> 00:19:33,247 480 00:19:33,247 --> 00:19:35,830 Ναι, έτσι είναι πραγματικά δείκτες το αγαπημένο μου μέρος σε αυτό το μάθημα. 481 00:19:35,830 --> 00:19:39,740 Έτσι απλά για να καταστήσει σαφές ό, τι Allison μιλούσε για εδώ, έτσι ώστε ο λόγος 482 00:19:39,740 --> 00:19:43,810 why-- τη μόνη διαφορά εδώ, η μεγάλη διαφορά ήταν ο τρόπος 483 00:19:43,810 --> 00:19:44,760 δηλώνουμε τα πράγματα. 484 00:19:44,760 --> 00:19:47,560 Έτσι αστέρων φοιτητής σημαίνει αυτό είναι ένας δείκτης σε ένα μαθητή. 485 00:19:47,560 --> 00:19:52,960 Ότι η διαφάνεια πριν, μαθητής είναι ένας πραγματική struct, σαν ένα πραγματικό φοιτητή, 486 00:19:52,960 --> 00:19:54,400 που περιέχουν οποιαδήποτε από αυτά τα πράγματα. 487 00:19:54,400 --> 00:19:57,050 >> Και ο λόγος για τον οποίο θέλουν to-- ναι, Davin; 488 00:19:57,050 --> 00:19:58,630 >> Davin: Τι σημαίνει το βέλος σημαίνει; 489 00:19:58,630 --> 00:20:04,240 >> Binky: Τα μέσα βέλος ακριβώς το ίδιο με αυτό. 490 00:20:04,240 --> 00:20:06,150 Έτσι, δεν χρειάζεται πραγματικά το βέλος. 491 00:20:06,150 --> 00:20:11,060 Όπως, εάν είστε μόνο πρόγραμμα σε C, μπορείτε να χρησιμοποιήσετε ακριβώς αυτό. 492 00:20:11,060 --> 00:20:12,850 Συγγνώμη, εγώ δεν κάνω αυτό που είναι. 493 00:20:12,850 --> 00:20:14,920 Μπορείτε να χρησιμοποιήσετε μόνο αυτό σύνταξη. 494 00:20:14,920 --> 00:20:17,430 >> Αλλά μερικοί άνθρωποι, όταν είχαν σχεδιασμό C, 495 00:20:17,430 --> 00:20:19,870 κατάλαβα ότι οι άνθρωποι χρησιμοποίησε τη σύνταξη τόσο πολύ, 496 00:20:19,870 --> 00:20:23,970 ότι θα ήθελα απλώς καταλήξει με μια δομή σύνταξη για αυτό. 497 00:20:23,970 --> 00:20:26,820 Και αυτό έγινε σε η μορφή αυτού του βέλους. 498 00:20:26,820 --> 00:20:29,210 Και είναι πραγματικά ωραίο, γιατί συμβολίζει κάτι 499 00:20:29,210 --> 00:20:33,670 σαν να είμαστε στην πραγματικότητα μετά από Αυτό το βέλος, αυτό το δείκτη, 500 00:20:33,670 --> 00:20:35,300 προς κάποιο χώρο στη μνήμη. 501 00:20:35,300 --> 00:20:40,410 Και όταν φτάσουμε εκεί, θέλουμε να να κοιτάξουμε προς το όνομα του εν λόγω μαθητή, 502 00:20:40,410 --> 00:20:42,150 αν αυτό έχει νόημα. 503 00:20:42,150 --> 00:20:43,000 Εντάξει; 504 00:20:43,000 --> 00:20:44,290 >> Έτσι, αυτό είναι ακριβώς το ίδιο. 505 00:20:44,290 --> 00:20:46,310 Αυτό είναι ακριβώς το ίδιο πράγμα με αυτό. 506 00:20:46,310 --> 00:20:48,130 Παίρνουν καταρτίζονται ακριβώς το ίδιο, εντάξει; 507 00:20:48,130 --> 00:20:50,100 508 00:20:50,100 --> 00:20:55,580 Και ο λόγος εδώ γιατί malloc κάτι, επειδή σε αυτή την περίπτωση, 509 00:20:55,580 --> 00:20:59,120 μεταβλητή μας είναι στην πραγματικότητα απλά μια μεταβλητή δείκτη. 510 00:20:59,120 --> 00:21:02,900 Έτσι έχουμε μόνο κάποιο διάστημα σε μνήμη που κρατά ένα δείκτη. 511 00:21:02,900 --> 00:21:06,570 Δεν έχουμε πραγματικά κανένα χώρο ότι κατέχει την πραγματική struct. 512 00:21:06,570 --> 00:21:08,660 >> Έτσι, αυτό πρέπει να γίνει σε δύο στάδια. 513 00:21:08,660 --> 00:21:11,545 Πρέπει να δημιουργήσουμε το μνήμη για να θέσει το struct in. 514 00:21:11,545 --> 00:21:14,445 Και εμείς πρέπει να δημιουργήσουμε το μνήμη για να θέσει το δείκτη στο. 515 00:21:14,445 --> 00:21:16,570 Έτσι, βασικά είναι δύο διαφορετικές μεταβλητές, εδώ. 516 00:21:16,570 --> 00:21:19,730 Ένας από αυτούς είναι φοιτητής τύπου, εκτός του ότι δεν έχει πραγματικά ένα όνομα. 517 00:21:19,730 --> 00:21:21,900 Και το άλλο είναι του τύπου αστέρι μαθητή. 518 00:21:21,900 --> 00:21:24,900 Και τότε φοιτητής 1 σημεία εκεί, αν αυτό το νόημα. 519 00:21:24,900 --> 00:21:25,871 520 00:21:25,871 --> 00:21:26,370 Εντάξει; 521 00:21:26,370 --> 00:21:28,160 522 00:21:28,160 --> 00:21:31,860 >> Έτσι, ο λόγος που χρησιμοποιούμε pointers είναι επειδή τα πάντα 523 00:21:31,860 --> 00:21:35,510 σε έναν υπολογιστή, κάθε μεταβλητή σε έναν υπολογιστή έχει δύο πράγματα. 524 00:21:35,510 --> 00:21:36,580 Έχει την αξία του. 525 00:21:36,580 --> 00:21:38,420 Και αυτό έχει τη διεύθυνσή της. 526 00:21:38,420 --> 00:21:41,390 Και ένας καλός τρόπος για να αντιλαμβάνονται αυτό είναι ότι υπάρχει 527 00:21:41,390 --> 00:21:44,230 πολλά προβλήματα όταν προσπαθήστε να χρησιμοποιήσετε τις λειτουργίες. 528 00:21:44,230 --> 00:21:47,200 Και θα πάμε να προσπαθήσουμε να εξετάσουμε σε ένα από αυτά. 529 00:21:47,200 --> 00:21:50,370 Δηλαδή, πρόκειται να σκεφτείτε μνήμη ως κουτιά. 530 00:21:50,370 --> 00:21:52,810 >> Μπορείτε πάντα πίστευα των μεταβλητών όταν λέτε na ισούται με 5. 531 00:21:52,810 --> 00:21:54,430 Έχετε σκεφτεί βάζοντας 5 σε ένα κουτί. 532 00:21:54,430 --> 00:21:55,520 533 00:21:55,520 --> 00:22:00,030 Έτσι, ό, τι και αν θέλετε να περάσετε ότι int σε μια συνάρτηση; 534 00:22:00,030 --> 00:22:03,230 Απλά pass-- εγώ δεν κάνω know-- x σε λειτουργία. 535 00:22:03,230 --> 00:22:06,090 Αλλά αυτό που συμβαίνει είναι συνήθως ως άνθρωποι, μπορείτε 536 00:22:06,090 --> 00:22:09,050 θα σκεφτούμε κάτι σαν να είμαι περνώντας το κουτί σε ένα πρόσωπο. 537 00:22:09,050 --> 00:22:12,070 Και δεν το κάνει πραγματικά συμβεί σε υπολογιστές. 538 00:22:12,070 --> 00:22:17,770 Αυτό που συμβαίνει είναι ότι μπορείτε να αντιγράψετε την τιμή από το κουτί στο κουτί του ατόμου. 539 00:22:17,770 --> 00:22:22,440 >> Έτσι, αυτό που προσπαθώ να πω είναι ότι εάν έχετε ένα function-- sorry-- εδώ, 540 00:22:22,440 --> 00:22:27,700 αν έχουμε μια συνάρτηση όπως σε πέντε έως εκεί, αν προσπαθήσετε να περάσει μια μεταβλητή, 541 00:22:27,700 --> 00:22:29,450 είναι ακριβώς πρόκειται να αντιγράψετε. 542 00:22:29,450 --> 00:22:35,771 Εάν ένα nx εκκινήσεως ισούται με 3, πρόκειται για να αντιγράψετε αυτήν την τιμή μέχρι την μεταβλητή a 543 00:22:35,771 --> 00:22:36,270 μέχρι εκεί. 544 00:22:36,270 --> 00:22:37,005 545 00:22:37,005 --> 00:22:39,630 Εντάξει, και αυτό είναι το είδος του λόγου γιατί θέλουμε να χρησιμοποιήσουμε δείκτες. 546 00:22:39,630 --> 00:22:42,550 Επειδή αντί της δίνοντας ακριβώς την τιμή, 547 00:22:42,550 --> 00:22:44,850 αντί απλά περνώντας απλά η τιμή σε μια λειτουργία, 548 00:22:44,850 --> 00:22:46,530 θέλουμε να περάσει με αναφορά. 549 00:22:46,530 --> 00:22:50,630 Αυτό που λέμε πάσα από αναφορά είναι το είδος της δίνει το πλαίσιο για τη λειτουργία, 550 00:22:50,630 --> 00:22:53,890 έτσι ώστε η λειτουργία μπορεί επίσης αλλάξετε τις τιμές μέσα σε αυτό το κουτί. 551 00:22:53,890 --> 00:22:57,280 >> Εντάξει, έτσι απλά κάποιες βασικές δείκτη η ουσία είναι να δημιουργήσουμε δείκτες, 552 00:22:57,280 --> 00:23:00,300 μπορείτε απλά να δηλώσει έναν τύπο, και βάζετε ένα αστέρι δεξιά μετά από αυτό. 553 00:23:00,300 --> 00:23:02,307 Και ο τύπος είναι απλά τι είστε δείχνοντας. 554 00:23:02,307 --> 00:23:04,390 Έτσι, αν πρόκειται για ένα αστέρι int, είστε δείχνοντας σε έναν int. 555 00:23:04,390 --> 00:23:05,940 Αν είναι ένα αστέρι char, είστε δείχνοντας σε ένα γράφημα. 556 00:23:05,940 --> 00:23:07,790 Και αν είναι ένα αστέρι φοιτητής, είστε δείχνοντας ένα φοιτητή. 557 00:23:07,790 --> 00:23:08,770 Εντάξει; 558 00:23:08,770 --> 00:23:10,510 >> Και είναι μεγάλη και τα 4 bytes. 559 00:23:10,510 --> 00:23:13,010 Εξαιτίας αυτής της μεταβλητής δεν το κάνει πραγματικότητα 560 00:23:13,010 --> 00:23:15,380 πρέπει να κρατήσει μια χαρα, ένας int, ή ένας φοιτητής. 561 00:23:15,380 --> 00:23:16,890 Το μόνο που χρειάζεται για να κρατήσει μια διεύθυνση. 562 00:23:16,890 --> 00:23:21,390 Γι 'αυτό είναι όλοι 4 bytes καιρό σε μια κανονική μηχανή 32-bit. 563 00:23:21,390 --> 00:23:21,890 Εντάξει; 564 00:23:21,890 --> 00:23:25,600 Μέχρι εδώ, το x είναι μια μεταβλητή που δείχνει σε int. y σημεία σε char. z σημεία 565 00:23:25,600 --> 00:23:26,580 σε ένα πλωτήρα. 566 00:23:26,580 --> 00:23:27,480 Οποιεσδήποτε ερωτήσεις εδώ; 567 00:23:27,480 --> 00:23:29,841 568 00:23:29,841 --> 00:23:30,340 Cool. 569 00:23:30,340 --> 00:23:32,550 Και υπάρχουν δύο διαφορετικά σύμβολα που έχουν 570 00:23:32,550 --> 00:23:34,341 να έχετε κατά νου όταν έρχονται στο δείκτη. 571 00:23:34,341 --> 00:23:36,540 Έτσι αναφορά και εύρεση τιμών είναι οι μεγάλες επιχειρήσεις. 572 00:23:36,540 --> 00:23:38,100 573 00:23:38,100 --> 00:23:41,602 Έτσι, το εμπορικό και της μεταβλητή όνομα σας την δίνει; 574 00:23:41,602 --> 00:23:42,310 Φοιτητής: Διεύθυνση. 575 00:23:42,310 --> 00:23:43,380 Binky: Διεύθυνση. 576 00:23:43,380 --> 00:23:47,330 Έτσι, αν έχετε δηλώσει int a ισούται με 5, τότε ampersand 577 00:23:47,330 --> 00:23:49,214 του ένα πρόκειται να σας δώσω τη διεύθυνση. 578 00:23:49,214 --> 00:23:51,130 Και μπορείτε πραγματικά να δοκιμάσετε να εκτυπώσετε και να δούμε 579 00:23:51,130 --> 00:23:54,640 ποια διεύθυνση στη μνήμη μεταβλητή σας έχει. 580 00:23:54,640 --> 00:23:57,380 Και τότε dereferencing-- έτσι ώστε η αναφορά, 581 00:23:57,380 --> 00:24:00,380 να πάρει το address-- εύρεση τιμών είναι ακριβώς το αντίθετο. 582 00:24:00,380 --> 00:24:04,120 ΟΚ, όπως ακριβώς φορές είναι η απέναντι από ένα τμήμα, 583 00:24:04,120 --> 00:24:06,060 αστέρων είναι το αντίθετο της ampersand. 584 00:24:06,060 --> 00:24:09,710 Έτσι, μέσα εύρεση τιμών πάει εκεί. 585 00:24:09,710 --> 00:24:14,280 Έτσι, αν έχετε δώσει star-- μου Δεν know-- 50, ότι είναι 586 00:24:14,280 --> 00:24:20,320 θα προσπαθήσω να πάω στη διεύθυνση του τον αριθμό 50 στο εσωτερικό του υπολογιστή σας. 587 00:24:20,320 --> 00:24:22,840 Εντάξει, και γιατί βλέπουμε ότι είναι αντίθετα; 588 00:24:22,840 --> 00:24:27,320 Διότι τι θα συμβεί αν το κάνετε κάτι σαν αστέρι εμπορικό και ένα; 589 00:24:27,320 --> 00:24:28,470 590 00:24:28,470 --> 00:24:33,460 Λοιπόν, σύμβολο ένα σας δίνει τη διεύθυνση μιας μεταβλητής, η διεύθυνση της a. 591 00:24:33,460 --> 00:24:35,830 Αλλά αστέρι σημαίνει πάει εκεί. 592 00:24:35,830 --> 00:24:38,930 >> Λοιπόν, τι θα συμβεί αν μεταβείτε στη διεύθυνση του α; 593 00:24:38,930 --> 00:24:40,400 Μπορείτε απλά να πάρετε σε ένα, σωστά; 594 00:24:40,400 --> 00:24:41,410 595 00:24:41,410 --> 00:24:43,600 Έτσι, πηγαίνει στην διεύθυνση του α είναι το ίδιο πράγμα όπως ένα. 596 00:24:43,600 --> 00:24:47,580 Γι 'αυτό είναι συνήθως αναφέρεται στην same-- αυτό 597 00:24:47,580 --> 00:24:50,480 και αυτό αναφέρονται ως αντίθετες φορείς. 598 00:24:50,480 --> 00:24:50,980 Εντάξει; 599 00:24:50,980 --> 00:24:52,780 600 00:24:52,780 --> 00:24:53,790 Έτσι δροσερό. 601 00:24:53,790 --> 00:24:57,240 >> Κάτω από την κουκούλα, για παράδειγμα, αν δηλώνουμε int x ισούται με 5, 602 00:24:57,240 --> 00:24:58,040 έχουμε μια μεταβλητή. 603 00:24:58,040 --> 00:25:00,790 Και να θυμάστε ότι είπα κάθε variable-- και αυτό είναι ένα καλό πράγμα 604 00:25:00,790 --> 00:25:03,820 για να κρατήσει σε mind-- έχει δύο διαφορετικά πράγματα που σχετίζονται με. 605 00:25:03,820 --> 00:25:06,460 Έχει αντιμετωπιστεί και μια τιμή. 606 00:25:06,460 --> 00:25:07,140 Εντάξει; 607 00:25:07,140 --> 00:25:09,180 >> Έτσι, η τιμή στην περίπτωση αυτή είναι 5. 608 00:25:09,180 --> 00:25:12,140 Και η διεύθυνση is-- ας πούμε, είμαι κάνοντας κάτι up-- είναι 0x04. 609 00:25:12,140 --> 00:25:13,180 610 00:25:13,180 --> 00:25:17,200 Και ο μόνος λόγος για τον οποίο συνήθως αντιπροσωπεύουν τις διευθύνσεις σε δεκαεξαδικό 611 00:25:17,200 --> 00:25:19,770 είναι ένα, διότι είναι σαν καλό. 612 00:25:19,770 --> 00:25:21,600 Πηγαίνει καλά με το δυαδικό. 613 00:25:21,600 --> 00:25:23,500 Είναι εύκολο να μετατρέψετε από και προς το δυαδικό. 614 00:25:23,500 --> 00:25:26,890 Και δεν παίρνει πάρα πολύ μεγάλο, αν έχετε ένα πολύ μεγάλο αριθμό. 615 00:25:26,890 --> 00:25:29,990 Έτσι μας αρέσει να χρησιμοποιούν δεκαεξαδικό στις διευθύνσεις εκτύπωσης. 616 00:25:29,990 --> 00:25:31,890 Αλλά θα μπορούσε να αποτελέσει αυτό ως ακέραιος αριθμός. 617 00:25:31,890 --> 00:25:32,750 Είναι μια χαρά. 618 00:25:32,750 --> 00:25:35,450 >> Και γι 'αυτό έχει μια διεύθυνση 4 και μια τιμή των 5. 619 00:25:35,450 --> 00:25:38,080 Και τότε είπα δείκτη int αστέρων. 620 00:25:38,080 --> 00:25:40,070 Έτσι, αυτό είναι ένα διαφορετικό είδος, ειδοποίηση. 621 00:25:40,070 --> 00:25:43,220 Int δείκτη αστέρι ισούται η διεύθυνση του x. 622 00:25:43,220 --> 00:25:46,425 Έτσι τι πρόκειται να είναι η τιμή του PTR; 623 00:25:46,425 --> 00:25:47,710 624 00:25:47,710 --> 00:25:51,600 Είναι πρόκειται να είναι η διεύθυνση του x, εδώ κάτω. 625 00:25:51,600 --> 00:25:54,190 Εντάξει, έτσι η τιμή πρόκειται να να είναι η ίδια με τη διεύθυνση. 626 00:25:54,190 --> 00:25:56,130 Αυτή είναι η ανάθεση λειτουργούν κάνω. 627 00:25:56,130 --> 00:25:59,380 Και τότε ptr πρόκειται να έχει τη δική της διεύθυνση, η οποία αποδεικνύεται, 628 00:25:59,380 --> 00:26:02,050 στην περίπτωση αυτή, η 8, εντάξει; 629 00:26:02,050 --> 00:26:03,850 630 00:26:03,850 --> 00:26:05,900 >> Και τότε μπορώ να δημιουργήσω ένα νέο αντίγραφο ακέραιο. 631 00:26:05,900 --> 00:26:08,790 Και λέω αντίγραφο int ισούται πάει εκεί. 632 00:26:08,790 --> 00:26:11,140 Έτσι πάει σε ό, τι ptr δείχνει προς. 633 00:26:11,140 --> 00:26:13,940 Λοιπόν, τι είναι αυτό το PTR έχουν; 634 00:26:13,940 --> 00:26:14,740 Ptr έχει 0x04. 635 00:26:14,740 --> 00:26:16,060 636 00:26:16,060 --> 00:26:18,400 Τι θα συμβεί αν προσπαθώ να πάω εκεί; 637 00:26:18,400 --> 00:26:23,650 Θα βρείτε τον τύπο που έχει διεύθυνση x και ο οποίος έχει τη διεύθυνσή 4. 638 00:26:23,650 --> 00:26:25,970 Και ποιος έχει αντιμετωπίσει τέσσερις είναι x. 639 00:26:25,970 --> 00:26:26,950 Μήπως αυτό έχει νόημα; 640 00:26:26,950 --> 00:26:28,295 641 00:26:28,295 --> 00:26:28,795 Ναι; 642 00:26:28,795 --> 00:26:32,060 >> Φοιτητής: Σε αυτή την περίπτωση, είναι το δείκτη σε μια στοίβα; 643 00:26:32,060 --> 00:26:36,024 >> Binky: Στην περίπτωση αυτή, it's-- καλή ερώτηση. 644 00:26:36,024 --> 00:26:38,690 Δεν είχα πραγματικά σκέφτομαι αυτό όταν κάνετε αυτές τις διευθύνσεις. 645 00:26:38,690 --> 00:26:42,570 Αλλά αν αυτό είναι, όπως όλοι αυτές είναι τοπικές μεταβλητές, 646 00:26:42,570 --> 00:26:46,372 τότε το x πρόκειται να ζήσουν in-- τα πάντα πρόκειται να ζήσουν στη στοίβα. 647 00:26:46,372 --> 00:26:48,330 Έτσι, ό, τι συμβαίνει να δείχνουν προς στοίβα. 648 00:26:48,330 --> 00:26:49,360 649 00:26:49,360 --> 00:26:52,700 Μπορείτε μόνο να φτάσετε στο σωρό, όταν αρχίσετε να χρησιμοποιείτε malloc, σωστά; 650 00:26:52,700 --> 00:26:59,430 >> Έτσι, αν θυμάστε στοίβα είναι κάθε φορά μπορείτε να καλέσετε μια συνάρτηση στο πρόγραμμά σας, 651 00:26:59,430 --> 00:27:02,800 παρόμοια, κύρια για παράδειγμα, ή οποιαδήποτε άλλη λειτουργία, όπως η printf. 652 00:27:02,800 --> 00:27:06,334 Όλες οι τοπικές μεταβλητές είναι πρόκειται να πάρει θέσει σε ένα πλαίσιο στοίβας. 653 00:27:06,334 --> 00:27:08,500 Και θα πάμε για να πάρει όπως είχαν συσσωρευτεί στη στοίβα. 654 00:27:08,500 --> 00:27:09,930 Αυτό είναι ό, τι λέγεται μια στοίβα. 655 00:27:09,930 --> 00:27:12,200 Και όλες αυτές οι τοπικές μεταβλητές πρόκειται να είναι εκεί. 656 00:27:12,200 --> 00:27:14,940 Και η heap-- και θα πάμε για να μιλήσουμε περισσότερο για αυτό το later-- 657 00:27:14,940 --> 00:27:19,050 ο σωρός είναι όπου όλα κατανέμονται δυναμικά τη ζωή της μνήμης. 658 00:27:19,050 --> 00:27:20,270 Cool; 659 00:27:20,270 --> 00:27:21,680 >> Έχουμε πάει σε αυτή τη διαφάνεια. 660 00:27:21,680 --> 00:27:22,800 Ναι; 661 00:27:22,800 --> 00:27:25,490 >> Φοιτητής: Γιατί δεν είναι int αντίγραφο επιστροφή 0x04; 662 00:27:25,490 --> 00:27:27,870 663 00:27:27,870 --> 00:27:30,066 >> Binky: Γιατί δεν είναι int αντίγραφο επιστροφή 0x04; 664 00:27:30,066 --> 00:27:32,450 >> Φοιτητής: Γιατί δεν είναι ότι [δεν ακούγεται]; 665 00:27:32,450 --> 00:27:35,530 >> Binky: Γιατί αυτό είναι μια τιμή του PTR; 666 00:27:35,530 --> 00:27:37,394 667 00:27:37,394 --> 00:27:38,370 >> Φοιτητής: 0x04. 668 00:27:38,370 --> 00:27:38,960 >> Binky: 0x04. 669 00:27:38,960 --> 00:27:40,910 Τι θα συμβεί αν πάτε σε 0x04; 670 00:27:40,910 --> 00:27:41,620 Τι θα πάρετε; 671 00:27:41,620 --> 00:27:42,371 >> Φοιτητής: Ω, εντάξει. 672 00:27:42,371 --> 00:27:42,995 Binky: Βλέπεις; 673 00:27:42,995 --> 00:27:43,536 Φοιτητής: Ναι. 674 00:27:43,536 --> 00:27:44,890 Binky: Έτσι μπορείτε να πάρετε 5. 675 00:27:44,890 --> 00:27:49,170 Έτσι αντίγραφο πρόκειται να έχει 5, αν αυτό έχει νόημα. 676 00:27:49,170 --> 00:27:49,809 Ναι; 677 00:27:49,809 --> 00:27:52,803 >> Φοιτητής: Θα μπορούσαμε να έχουμε πάρει 5 στο κουτί τιμή [δεν ακούγεται] 678 00:27:52,803 --> 00:27:55,300 αν βάλουμε int αντιγράψετε [δεν ακούγεται]. 679 00:27:55,300 --> 00:27:56,710 >> Binky: Int-- εμείς θα, ναι. 680 00:27:56,710 --> 00:27:59,080 Αυτό θα γίνει λίγο πολύ το ίδιο πράγμα. 681 00:27:59,080 --> 00:28:02,080 Αλλά με αυτόν τον τρόπο, μπορούμε να περάσουμε απευθύνονται σε λειτουργίες. 682 00:28:02,080 --> 00:28:05,050 Και αυτό είναι το δροσερό πράγμα θα πάμε να κάνουμε τώρα. 683 00:28:05,050 --> 00:28:06,770 684 00:28:06,770 --> 00:28:13,090 >> Έτσι, αυτό το είδος της άσκησης έρχεται πάντα on-- πολύ συνήθως έρχεται στο κουίζ. 685 00:28:13,090 --> 00:28:15,870 Γι 'αυτό είναι πολύ καλό για να προσπαθήσει να κάνει αυτό το είδος των πράγμα στον εαυτό σας. 686 00:28:15,870 --> 00:28:21,210 Έτσι, προσπαθήστε να παρακολουθείτε ό, τι στη διεύθυνση είναι και θέλουν τις τιμές των μεταβλητών 687 00:28:21,210 --> 00:28:22,620 είναι σε κάθε σημείο. 688 00:28:22,620 --> 00:28:24,370 Έτσι, αυτό είναι ακριβώς τι πάμε να κάνουμε. 689 00:28:24,370 --> 00:28:26,988 Εδώ, έχουμε βήματα, το ένα, δύο, τρία, τέσσερα, πέντε. 690 00:28:26,988 --> 00:28:30,530 Ένα, δύο, τρία, τέσσερα, πέντε. 691 00:28:30,530 --> 00:28:33,330 Και θα πάμε να παρακολουθείτε από τις τιμές του χ και α. 692 00:28:33,330 --> 00:28:34,650 693 00:28:34,650 --> 00:28:40,530 >> Έτσι τι είναι αυτό που κάνει, αν αυτό είναι ένα προβληματικός κώδικας, προσπαθούμε να κάνουμε σε πέντε. 694 00:28:40,530 --> 00:28:43,610 Έτσι, προσπαθούμε να έρθουμε σε μια μεταβλητή και αλλάξτε την τιμή του σε 5. 695 00:28:43,610 --> 00:28:44,630 696 00:28:44,630 --> 00:28:49,900 Και να θυμάστε αναλογία μου έχει ένα κουτί και παραδίδοντάς το κουτί σε κάποιον; 697 00:28:49,900 --> 00:28:51,515 Έτσι κύριος έχει αυτό το κουτί που ονομάζεται x. 698 00:28:51,515 --> 00:28:52,570 699 00:28:52,570 --> 00:28:54,170 Και αυτό περιλαμβάνει την τιμή 3. 700 00:28:54,170 --> 00:28:55,230 701 00:28:55,230 --> 00:28:57,455 Και εγώ προσπαθώ να παραδώσει αυτό το πλαίσιο για να πέντε. 702 00:28:57,455 --> 00:28:58,560 703 00:28:58,560 --> 00:29:01,510 >> Και θέλω να πέντε να αλλάξει η αξία της θέσης αυτής έως 5. 704 00:29:01,510 --> 00:29:03,080 705 00:29:03,080 --> 00:29:05,120 Και τότε εγώ απλά εκτυπώνουμε την τιμή του x. 706 00:29:05,120 --> 00:29:06,475 707 00:29:06,475 --> 00:29:08,850 Αυτό είναι ό, τι function-- μου Αυτό είναι αυτό που προσπαθώ να κάνω. 708 00:29:08,850 --> 00:29:12,450 Είμαι απλώς προσπαθούν να ενημερώσετε η τιμή του χ έως 5. 709 00:29:12,450 --> 00:29:13,512 710 00:29:13,512 --> 00:29:14,970 Είναι σαφές τι κάνει η συνάρτηση; 711 00:29:14,970 --> 00:29:16,210 712 00:29:16,210 --> 00:29:21,440 >> Εντάξει, έτσι τι πρόκειται να είναι η τιμές του x και το δικαίωμα εδώ, 713 00:29:21,440 --> 00:29:27,734 η πρώτη γραμμή, δεξιά πριν από την πρώτη line-- Θα say-- του προγράμματος; 714 00:29:27,734 --> 00:29:28,940 >> Φοιτητής: Μάλλον σκουπίδια. 715 00:29:28,940 --> 00:29:30,023 >> Binky: Απλά πράγματα σκουπίδια. 716 00:29:30,023 --> 00:29:32,590 Γι 'αυτό απλά βάλτε N / A. Έτσι εμείς δεν γνωρίζουμε πραγματικά. 717 00:29:32,590 --> 00:29:37,400 Όπως, μια δεν υπάρχουν ακόμη, γιατί δεν έχουμε κληθεί να πέντε. 718 00:29:37,400 --> 00:29:38,980 Int ένα δεν έχει δηλωθεί. 719 00:29:38,980 --> 00:29:40,030 720 00:29:40,030 --> 00:29:42,920 Και το χ πρόκειται να υφίσταται εδώ, αλλά δεν έχουμε πραγματικά 721 00:29:42,920 --> 00:29:45,370 αποδίδεται καμία αξία σε αυτό, οπότε ΟΚ; 722 00:29:45,370 --> 00:29:46,570 723 00:29:46,570 --> 00:29:52,340 >> Και τότε, τι πρόκειται να είναι η τιμές των χ και α σε αριθμό δύο; 724 00:29:52,340 --> 00:29:54,530 725 00:29:54,530 --> 00:29:55,410 >> Φοιτητής: [δεν ακούγεται]. 726 00:29:55,410 --> 00:29:57,540 >> Binky: Έτσι χ πρόκειται να είναι 3. 727 00:29:57,540 --> 00:29:59,650 Αυτό είναι εύκολο, επειδή είμαστε αναθέτοντας 3 σε αυτό. 728 00:29:59,650 --> 00:30:03,500 Και ακόμα δεν υπάρχει επειδή ένας μόνο ζει σε πέντε. 729 00:30:03,500 --> 00:30:05,800 Έτσι, Πάω να έχουν 3 και τίποτα. 730 00:30:05,800 --> 00:30:08,590 ή όπως τα σκουπίδια, όποια και αν είναι, δεν είναι πραγματικά ορίζεται. 731 00:30:08,590 --> 00:30:11,640 732 00:30:11,640 --> 00:30:13,140 Και τώρα, αυτό είναι το σημαντικό γραμμή. 733 00:30:13,140 --> 00:30:14,931 Εδώ, θα πάμε να πραγματικά καλούν σε πέντε. 734 00:30:14,931 --> 00:30:17,140 735 00:30:17,140 --> 00:30:18,680 Και να θυμάστε αυτό που είπα. 736 00:30:18,680 --> 00:30:20,240 Εμείς ποτέ δεν περνούν στο κουτί. 737 00:30:20,240 --> 00:30:23,110 Εμείς απλά αντιγράψτε την αξία της το παράθυρο σε ένα άλλο κουτί. 738 00:30:23,110 --> 00:30:27,000 Αυτό είναι όλοι οι υπολογιστές κάνουν, αντιγράψετε πράγματα από το ένα μέρος στο άλλο. 739 00:30:27,000 --> 00:30:33,550 >> Έτσι, σε πέντε, τι κάνει στην πραγματικότητα είναι αντιγράφει η τιμή του x στο Α. 740 00:30:33,550 --> 00:30:35,130 Έτσι τι πρόκειται να είναι εδώ; 741 00:30:35,130 --> 00:30:36,210 Οι τιμές των χ και α. 742 00:30:36,210 --> 00:30:38,670 743 00:30:38,670 --> 00:30:43,360 3 και 3, θα αντιγραφεί μόνο είναι πάνω από το x προς ένα. 744 00:30:43,360 --> 00:30:44,710 745 00:30:44,710 --> 00:30:45,320 Cool. 746 00:30:45,320 --> 00:30:46,140 >> Τώρα είμαστε εδώ. 747 00:30:46,140 --> 00:30:47,610 748 00:30:47,610 --> 00:30:49,430 Και τώρα θα πάμε να ενημερώσετε το α ισούται με 5. 749 00:30:49,430 --> 00:30:50,900 750 00:30:50,900 --> 00:30:53,070 Τι πρόκειται να συμβεί στη γραμμή τέσσερα; 751 00:30:53,070 --> 00:30:55,120 752 00:30:55,120 --> 00:30:56,010 >> Φοιτητής: [δεν ακούγεται]. 753 00:30:56,010 --> 00:30:59,685 >> Binky: α παίρνει ενημερώνεται, αλλά το Χ δεν λάβετε ενημέρωση. 754 00:30:59,685 --> 00:31:02,050 755 00:31:02,050 --> 00:31:05,250 Επειδή x εξακολουθεί να ζει στο κύριο, αυτό είναι ένα εντελώς διαφορετικά μπλοκ της μνήμης. 756 00:31:05,250 --> 00:31:06,970 Είναι μια διαφορετική μεταβλητή. 757 00:31:06,970 --> 00:31:07,900 α είναι μια άλλη μεταβλητή. 758 00:31:07,900 --> 00:31:10,000 Που συμβαίνει να έχουν την ίδια αξία γιατί 759 00:31:10,000 --> 00:31:13,980 αντιγραφούν πάνω στην τιμή του x στο Α. 760 00:31:13,980 --> 00:31:20,070 Αλλά τώρα, όταν κάνω ένα ισούται με 5, το δεν επηρεάζει πραγματικά x με οποιονδήποτε τρόπο. 761 00:31:20,070 --> 00:31:21,450 Αυτό είναι το δυσκολότερο μέρος. 762 00:31:21,450 --> 00:31:23,380 Έχει νόημα για όλους; 763 00:31:23,380 --> 00:31:24,093 Ναι; 764 00:31:24,093 --> 00:31:25,717 Φοιτητής: Μία ακόμη ερώτηση, έχετε 3. 765 00:31:25,717 --> 00:31:27,741 Γιατί είναι ένα already-- Ω, όχι, αυτό είναι 3. 766 00:31:27,741 --> 00:31:28,490 Λυπούμαστε, αλλά δεν πειράζει. 767 00:31:28,490 --> 00:31:29,310 Διάβασα 5. 768 00:31:29,310 --> 00:31:30,415 >> Binky: Ναι, 3, 3. 769 00:31:30,415 --> 00:31:31,540 >> Φοιτητής: [δεν ακούγεται], ναι. 770 00:31:31,540 --> 00:31:35,290 Binky: Και τότε αναθέτουμε 5 ένα, αλλά δεν αλλάζει πραγματικά x. 771 00:31:35,290 --> 00:31:36,369 Καλό; 772 00:31:36,369 --> 00:31:36,910 Φοιτητής: Ναι. 773 00:31:36,910 --> 00:31:37,410 Binky: Ναι; 774 00:31:37,410 --> 00:31:42,330 Μπορείτε να μας εξηγήσετε πάλι πώς α αντιγράφεται [δεν ακούγεται]; 775 00:31:42,330 --> 00:31:48,480 >> Binky: Εντάξει, έτσι όταν σας καλούν σε πέντε του x, οπότε αυτή τη γραμμή του κώδικα εδώ. 776 00:31:48,480 --> 00:31:50,100 777 00:31:50,100 --> 00:31:52,340 σε πέντε από τα Χ, τι είναι το Χ; 778 00:31:52,340 --> 00:31:55,160 779 00:31:55,160 --> 00:31:58,340 x είναι μόλις 3 σε αυτό το σημείο, σωστά; 780 00:31:58,340 --> 00:32:03,320 Έτσι θα μπορούσατε να σκεφτείτε ακριβώς από τη θέση ένα 3 στο εδώ και ξεχνώντας για το x. 781 00:32:03,320 --> 00:32:04,410 Απλά βάλτε ένα 3 εδώ. 782 00:32:04,410 --> 00:32:10,880 Όπως, θα πάμε να αντιγράψετε πάνω από το τιμή του x στο int a που είναι εκεί πάνω. 783 00:32:10,880 --> 00:32:12,310 784 00:32:12,310 --> 00:32:13,630 Εντάξει; 785 00:32:13,630 --> 00:32:14,780 >> Έτσι, η τιμή του x είναι 3. 786 00:32:14,780 --> 00:32:17,680 Εμείς πάμε για να αντιγράψετε 3 πάνω σε ένα. 787 00:32:17,680 --> 00:32:20,040 Και όλα αυτά άλλα μπλοκ τη μνήμη, αυτή η άλλη μεταβλητή 788 00:32:20,040 --> 00:32:22,640 ονομάζεται θα έχει 3, καθώς και. 789 00:32:22,640 --> 00:32:23,580 Μήπως αυτό έχει νόημα; 790 00:32:23,580 --> 00:32:24,780 791 00:32:24,780 --> 00:32:25,794 Ναι; 792 00:32:25,794 --> 00:32:31,008 >> Φοιτητής: Αν δώσετε σε πέντε, όπως έχουν ως ακέραιος x αντί για ένα, 793 00:32:31,008 --> 00:32:32,910 θα καθορίσει ότι τα πάντα; 794 00:32:32,910 --> 00:32:36,290 >> Binky: Αν είναι μια integer-- όχι, ότι δεν θα καθορίσει τα πάντα. 795 00:32:36,290 --> 00:32:37,590 Έτσι, αυτό είναι μια πολύ καλή ερώτηση. 796 00:32:37,590 --> 00:32:40,480 Δεν έχει τόση σημασία τι να καλέσετε αυτές τις μεταβλητές. 797 00:32:40,480 --> 00:32:44,510 Και πάλι, αυτό θα είναι ένα ζήτημα του πεδίου εφαρμογής, επειδή δεν είναι το ίδιο χ. 798 00:32:44,510 --> 00:32:46,526 Είναι εντελώς διαφορετικές θέσεις στη μνήμη. 799 00:32:46,526 --> 00:32:47,400 Φοιτητής: [δεν ακούγεται]. 800 00:32:47,400 --> 00:32:49,020 Binky: Γι 'αυτό δεν κάνει πραγματικά έχει σημασία τι θα τους αποκαλούν. 801 00:32:49,020 --> 00:32:50,480 Αυτό δεν διορθώσει τα πράγματα, εντάξει; 802 00:32:50,480 --> 00:32:53,390 803 00:32:53,390 --> 00:32:54,430 Περισσότερες ερωτήσεις; 804 00:32:54,430 --> 00:32:55,762 Ναι; 805 00:32:55,762 --> 00:32:58,498 >> Φοιτητής: Πώς είναι πίσω στο αριθμός πέντε [δεν ακούγεται]; 806 00:32:58,498 --> 00:32:59,661 807 00:32:59,661 --> 00:33:01,160 Binky: Εντάξει, δεν έχουμε κάνει ακόμα. 808 00:33:01,160 --> 00:33:03,432 Ας πάμε στο νούμερο πέντε, τότε. 809 00:33:03,432 --> 00:33:04,650 >> Φοιτητής: [δεν ακούγεται]; 810 00:33:04,650 --> 00:33:05,565 >> Binky: Τι; 811 00:33:05,565 --> 00:33:08,179 >> Φοιτητής: Έχετε μια επιστροφή σε όλους; 812 00:33:08,179 --> 00:33:09,970 Binky: Δεν έχουμε μια επιστροφή, όχι της κύριας. 813 00:33:09,970 --> 00:33:12,940 Αλλά το κύριο επιστρέφει 0 αυτόματα αν δεν επιστρέψει τίποτα. 814 00:33:12,940 --> 00:33:14,400 815 00:33:14,400 --> 00:33:15,188 Ναι; 816 00:33:15,188 --> 00:33:22,658 >> Φοιτητής: Θα μπορούσατε να κάνετε main-- ή θα μπορούσατε να κάνετε σε πέντε επιστροφή; 817 00:33:22,658 --> 00:33:24,170 818 00:33:24,170 --> 00:33:27,990 >> Binky: Θα μπορούσαμε να έχουμε σε πέντε επιστρέψει ένα, ναι. 819 00:33:27,990 --> 00:33:32,527 Αλλά τότε θα πρέπει να ορίσετε x ισούται με την τιμή επιστροφής της σε πέντε, 820 00:33:32,527 --> 00:33:34,360 η οποία θα ήταν μια ελαφρώς διαφορετικό πρόγραμμα. 821 00:33:34,360 --> 00:33:35,440 Θα λειτουργήσει. 822 00:33:35,440 --> 00:33:38,730 Αλλά αυτό που θέλουμε να κάνουμε είναι ό, τι είναι κάτι που ονομάζεται αλλαγή του τόπου. 823 00:33:38,730 --> 00:33:41,690 Έτσι θέλουμε πραγματικά να αλλάξει αυτό το πλαίσιο και να μην ανησυχείτε 824 00:33:41,690 --> 00:33:44,390 σχετικά με την επιστροφή αξίες ή τίποτα. 825 00:33:44,390 --> 00:33:44,890 Εντάξει; 826 00:33:44,890 --> 00:33:46,490 827 00:33:46,490 --> 00:33:50,150 >> Αυτό είναι ακριβώς όπως τη λειτουργία εναλλαγής David έδειξε σε διάλεξη, με εξαίρεση είμαι 828 00:33:50,150 --> 00:33:51,740 ασχολούνται μόνο με μία μεταβλητή. 829 00:33:51,740 --> 00:33:55,960 Και χρησιμοποίησε δύο, έτσι int a και b και τότε προσωρινή μεταβλητή και εταζέρα. 830 00:33:55,960 --> 00:33:57,020 Εντάξει; 831 00:33:57,020 --> 00:33:58,070 Έτσι ποια είναι η τελευταία γραμμή; 832 00:33:58,070 --> 00:34:04,400 Μετά από πέντε επιστροφές, είναι απλά ο ένας πρόκειται να πάει μακριά. 833 00:34:04,400 --> 00:34:06,120 834 00:34:06,120 --> 00:34:10,179 Εμείς δεν θα έχουν πια, και μόνο το Χ θα εξακολουθούν να ζουν σε. 835 00:34:10,179 --> 00:34:12,130 >> Και μαντέψτε τι; x δεν αλλάζει την αξία του, 836 00:34:12,130 --> 00:34:15,520 μετά από όλα, γιατί είμαστε μόνο αλλάζοντας την τιμή του ενός. 837 00:34:15,520 --> 00:34:17,370 Αυτός είναι ο λόγος για τον οποίο το Χ ήταν 3 καθ 'όλη. 838 00:34:17,370 --> 00:34:17,870 Εντάξει; 839 00:34:17,870 --> 00:34:20,195 840 00:34:20,195 --> 00:34:21,130 Καλή. 841 00:34:21,130 --> 00:34:23,560 Έτσι, αυτό το πρόγραμμα δεν επιτύχουμε αυτό που θέλαμε. 842 00:34:23,560 --> 00:34:24,760 Τώρα ας το διορθώσετε. 843 00:34:24,760 --> 00:34:27,440 >> Και το πρόγραμμα λύση είναι χρησιμοποιώντας δείκτες. 844 00:34:27,440 --> 00:34:32,300 Αυτό που κάνουμε είναι να έχουμε τρεις γραμμές που είναι διαφορετικές. 845 00:34:32,300 --> 00:34:34,020 Οι πρώτοι είναι δεν είμαστε περνώντας x. 846 00:34:34,020 --> 00:34:35,535 Είμαστε περνώντας τη διεύθυνση του x. 847 00:34:35,535 --> 00:34:37,330 848 00:34:37,330 --> 00:34:40,876 Έτσι, αντί να αντιγράφουν πάνω η αξία του κουτιού, 849 00:34:40,876 --> 00:34:42,500 Είμαι ακόμα πρόκειται να αντιγράψετε πάνω από κάτι. 850 00:34:42,500 --> 00:34:45,380 Αλλά είμαι αντιγραφή πάνω η διεύθυνση του κουτιού. 851 00:34:45,380 --> 00:34:48,780 >> Έτσι, αν έχω περάσει τη διεύθυνση του κουτί με πέντε, τότε σε πέντε 852 00:34:48,780 --> 00:34:51,560 θα είναι σε θέση να διαπιστώσει ότι το μνήμη και αλλάξτε την τιμή του. 853 00:34:51,560 --> 00:34:53,980 854 00:34:53,980 --> 00:34:59,580 >> Έτσι και στη συνέχεια μέχρι εκεί, έχω ότι δεν είναι ένας int πια. 855 00:34:59,580 --> 00:35:00,882 α είναι ένα αστέρι int. 856 00:35:00,882 --> 00:35:02,090 Είναι ένας δείκτης σε ακέραιο. 857 00:35:02,090 --> 00:35:03,790 858 00:35:03,790 --> 00:35:07,310 Και τότε, γιατί περνάω το αντιμετώπιση εδώ, και τότε τι να κάνω 859 00:35:07,310 --> 00:35:10,530 δεν είναι ίσο με 5, γιατί ένας κρατάει μια διεύθυνση. 860 00:35:10,530 --> 00:35:16,710 Έτσι, αυτό που θέλω να κάνω είναι να πάει εκεί και ενημερώσετε τα περιεχόμενα αυτής της διεύθυνσης 861 00:35:16,710 --> 00:35:18,305 με 5. 862 00:35:18,305 --> 00:35:21,130 >> ΟΚ, οπότε ας πάμε μέσα το σύνολο των γραμμών ένα προς ένα. 863 00:35:21,130 --> 00:35:22,410 864 00:35:22,410 --> 00:35:26,024 Έτσι, όταν αρχίσω εδώ, εγώ εξακολουθούν να έχουν Ν / Α Ν / Α Ν / Α 865 00:35:26,024 --> 00:35:28,440 για πάντα στην πρώτη γραμμή, γιατί δεν έχω πραγματικά 866 00:35:28,440 --> 00:35:29,390 δηλωθεί ακόμη πράγματα. 867 00:35:29,390 --> 00:35:30,980 868 00:35:30,980 --> 00:35:35,110 Και τότε η Γραμμή δύο, έχω χ ισούται με 3. 869 00:35:35,110 --> 00:35:38,020 Ένας int αστέρι μια δεν υπάρχουν, ίδιο πράγμα όπως και πριν. 870 00:35:38,020 --> 00:35:39,160 871 00:35:39,160 --> 00:35:40,640 >> Τώρα γίνεται ενδιαφέρον. 872 00:35:40,640 --> 00:35:42,300 Έτσι, Πάω να περάσει. 873 00:35:42,300 --> 00:35:45,720 Και ας υποθέσουμε ότι η διεύθυνση x είναι 12 στο δεκαεξαδικό. 874 00:35:45,720 --> 00:35:46,880 875 00:35:46,880 --> 00:35:48,420 Ας υποθέσουμε αυτό. 876 00:35:48,420 --> 00:35:49,221 Μου έκανε επάνω. 877 00:35:49,221 --> 00:35:51,680 878 00:35:51,680 --> 00:35:53,500 Έτσι, αυτό που είμαι περνώντας εδώ είναι ένα προς πέντε. 879 00:35:53,500 --> 00:35:54,460 Περνάω 12. 880 00:35:54,460 --> 00:35:56,390 881 00:35:56,390 --> 00:35:58,610 >> Έτσι τι αξία έχει ένα έχει; 882 00:35:58,610 --> 00:36:04,785 883 00:36:04,785 --> 00:36:06,210 >> Φοιτητής: [δεν ακούγεται]. 884 00:36:06,210 --> 00:36:06,950 >> Binky: Συγγνώμη; 885 00:36:06,950 --> 00:36:08,145 >> Φοιτητής: [δεν ακούγεται]. 886 00:36:08,145 --> 00:36:10,520 Binky: Ναι, όπως, για να ας υποθέσουμε ότι είμαστε εδώ, τώρα. 887 00:36:10,520 --> 00:36:11,540 888 00:36:11,540 --> 00:36:12,040 Ρωτάω. 889 00:36:12,040 --> 00:36:12,915 >> Φοιτητής: [δεν ακούγεται]. 890 00:36:12,915 --> 00:36:13,590 891 00:36:13,590 --> 00:36:14,890 >> Binky: Έχει ξεκινήσει. 892 00:36:14,890 --> 00:36:15,860 >> Φοιτητής: [δεν ακούγεται]. 893 00:36:15,860 --> 00:36:17,985 Binky: Επειδή περάσαμε κάτι στη λειτουργία. 894 00:36:17,985 --> 00:36:19,431 895 00:36:19,431 --> 00:36:19,930 Ναι; 896 00:36:19,930 --> 00:36:20,899 >> Φοιτητής: Διεύθυνση του x. 897 00:36:20,899 --> 00:36:22,690 Binky: Δεν πρόκειται να έχει τη διεύθυνση του x. 898 00:36:22,690 --> 00:36:25,800 Και η διεύθυνση του x είναι 12, καλό. 899 00:36:25,800 --> 00:36:30,990 Έτσι χ πρόκειται να είναι 3, επειδή που δεν έχουν αλλάξει πραγματικά x ακόμα. 900 00:36:30,990 --> 00:36:36,700 Και στη συνέχεια ένα πρόκειται να είναι 0x12, έτσι η διεύθυνση του x, γιατί αυτό είναι 901 00:36:36,700 --> 00:36:38,840 τι περάσαμε σε πέντε. 902 00:36:38,840 --> 00:36:40,940 >> Και τότε τι θα συμβεί αν προσπαθήσουμε να πάμε εκεί; 903 00:36:40,940 --> 00:36:42,145 Τι θα βρούμε; 904 00:36:42,145 --> 00:36:47,120 Έτσι, αν προσπαθήσετε να εκτυπώσετε ένα αστέρι, θα πάμε να ακολουθήσει αυτή τη διεύθυνση 905 00:36:47,120 --> 00:36:48,620 και να πάρει την τιμή στο εσωτερικό. 906 00:36:48,620 --> 00:36:50,470 Και η τιμή είναι απλά η ίδια αξία που χ 907 00:36:50,470 --> 00:36:53,980 έχει, διότι αυτή είναι η διεύθυνση του Χ, η οποία θα είναι 3. 908 00:36:53,980 --> 00:36:55,440 909 00:36:55,440 --> 00:36:56,930 Είμαστε καλά; 910 00:36:56,930 --> 00:36:59,990 >> OK, και στη συνέχεια, τώρα, μπορούμε πραγματικά να πάμε εκεί. 911 00:36:59,990 --> 00:37:05,510 Και έχουμε ενημερώσει ανεξάρτητα από Είναι σε αυτή τη διεύθυνση 12. 912 00:37:05,510 --> 00:37:07,390 Εμείς το 5 κάνει. 913 00:37:07,390 --> 00:37:10,560 Έτσι τώρα τα δύο Χ και ένα αστέρι είναι 5. 914 00:37:10,560 --> 00:37:13,170 915 00:37:13,170 --> 00:37:13,680 >> Γιατί συμβαίνει αυτό; 916 00:37:13,680 --> 00:37:17,070 Επειδή η διεύθυνση του x είναι 12. 917 00:37:17,070 --> 00:37:20,920 Και έχει επίσης 12 ως αξία του. 918 00:37:20,920 --> 00:37:23,780 Έτσι, αν ακολουθήσουμε 12, είμαστε ακριβώς πρόκειται να βρούμε το x. 919 00:37:23,780 --> 00:37:27,400 Έτσι, ό, τι κάνουμε με ένα αστέρι πρόκειται να συμβεί 920 00:37:27,400 --> 00:37:30,790 στο x, επειδή περιέχει ένα η διεύθυνση του x. 921 00:37:30,790 --> 00:37:31,918 922 00:37:31,918 --> 00:37:32,418 Εντάξει; 923 00:37:32,418 --> 00:37:34,090 924 00:37:34,090 --> 00:37:37,750 >> Και αυτό είναι σαν την ουσία της ενημέρωσης κώδικα. 925 00:37:37,750 --> 00:37:41,500 Έτσι τώρα είμαστε σε θέση, από πέντε, στην πραγματικότητα 926 00:37:41,500 --> 00:37:43,840 μνήμη πρόσβασης που έζησε στην κύρια. 927 00:37:43,840 --> 00:37:47,980 Έτσι, αυτή η μνήμη δεν ζει για να πέντε, όπως και πριν, αυτή η διεύθυνση 12. 928 00:37:47,980 --> 00:37:50,980 Και ήμασταν σε θέση να πάτε εκεί και αλλάξτε την τιμή του σε 5. 929 00:37:50,980 --> 00:37:53,990 >> Και στη συνέχεια, όταν θα επιστρέψετε, μπορούμε να ξεχάσουμε ένα. 930 00:37:53,990 --> 00:37:55,720 Ξεχνάμε για ένα αστέρι. 931 00:37:55,720 --> 00:37:57,020 Και το Χ είναι ακόμα πέντε. 932 00:37:57,020 --> 00:37:58,327 933 00:37:58,327 --> 00:38:00,160 Έτσι, εάν θέλετε να εφαρμόσει μια λειτουργία ανταλλαγής, 934 00:38:00,160 --> 00:38:05,010 θα κάνει ακριβώς το ίδιο πράγμα, εκτός από εσάς πρέπει να int αστέρια εδώ, 935 00:38:05,010 --> 00:38:06,140 και ούτω καθεξής και ούτω καθεξής. 936 00:38:06,140 --> 00:38:06,976 Εντάξει; 937 00:38:06,976 --> 00:38:07,475 Είμαστε καλά; 938 00:38:07,475 --> 00:38:09,860 939 00:38:09,860 --> 00:38:10,610 Cool. 940 00:38:10,610 --> 00:38:12,410 >> Έτσι αριθμητικής δεικτών. 941 00:38:12,410 --> 00:38:13,960 Αυτό είναι ένα ελαφρώς δύσκολο θέμα. 942 00:38:13,960 --> 00:38:16,554 Έτσι αποδεικνύεται ότι δείκτες είναι μόνο ακέραιοι αριθμοί. 943 00:38:16,554 --> 00:38:17,970 Μπορείτε να σκεφτείτε τους ως ακέραιοι. 944 00:38:17,970 --> 00:38:21,080 Επειδή στη μνήμη, μπορείτε να έχετε, όπως μνήμη διευθύνσεων μηδέν, ένα, δύο, τρία, 945 00:38:21,080 --> 00:38:21,900 τέσσερα, πέντε. 946 00:38:21,900 --> 00:38:23,900 Έτσι μπορούμε να συνοψίσουμε τις διευθύνσεις μνήμης. 947 00:38:23,900 --> 00:38:27,230 >> Και αυτό είναι συνήθως τι κάνεις όταν είστε σε σειρά και, για παράδειγμα. 948 00:38:27,230 --> 00:38:30,540 Μια σειρά είναι ακριβώς όπως ένα συνεχόμενο μπλοκ της μνήμης, των παρτίδων των χαρακτήρων, 949 00:38:30,540 --> 00:38:31,840 για παράδειγμα, πολλά ints. 950 00:38:31,840 --> 00:38:34,420 Έτσι, εάν θέλετε να μεταβείτε στο δεύτερη int ή στο τρίτο int, 951 00:38:34,420 --> 00:38:37,830 μπορείτε απλώς να συνοψίσω κάτι στην πρώτη διεύθυνση, και θα πάμε για να φτάσετε εκεί. 952 00:38:37,830 --> 00:38:39,620 Έτσι, αυτό είναι πραγματικά χρήσιμο για αυτό. 953 00:38:39,620 --> 00:38:41,850 >> Και το πράγμα για να κρατήσει στο μυαλό, όμως, είναι 954 00:38:41,850 --> 00:38:45,140 ότι δεν είναι ακριβώς όπως κανονική αριθμητική με την έννοια 955 00:38:45,140 --> 00:38:50,304 ότι αν έχουμε να κάνουμε με, ας πούμε, ένα αστέρι int, και μπορείτε να προσθέσετε 1 σε αυτό, 956 00:38:50,304 --> 00:38:52,220 τότε δεν πρόκειται να προσθέσετε 1 στη διεύθυνση, 957 00:38:52,220 --> 00:38:53,950 θα πάμε να προσθέσετε 4 στη διεύθυνση. 958 00:38:53,950 --> 00:38:55,030 959 00:38:55,030 --> 00:38:56,670 Επειδή ένας int είναι 4 bytes. 960 00:38:56,670 --> 00:38:57,720 961 00:38:57,720 --> 00:38:59,540 >> Έτσι, αυτό είναι ακριβώς όπως το περπάτημα σε μια σειρά. 962 00:38:59,540 --> 00:39:05,260 Αν έχουμε μια σειρά από πολλά ints και Στη συνέχεια θα προσπαθήσουμε να πάμε στο δεύτερο, 963 00:39:05,260 --> 00:39:08,790 είναι ουσιαστικά μόνο αθροίζοντας τα διεύθυνση του πρώτου συν 1. 964 00:39:08,790 --> 00:39:10,040 965 00:39:10,040 --> 00:39:13,425 Αλλά αυτό δεν θα be-- απλά ας πούμε ότι η διεύθυνση του πρώτου είναι 4. 966 00:39:13,425 --> 00:39:14,560 967 00:39:14,560 --> 00:39:16,250 Εδώ, σε αυτή την περίπτωση. 968 00:39:16,250 --> 00:39:19,780 969 00:39:19,780 --> 00:39:22,850 Και αν αθροίσουμε, έτσι αυτό είναι ό, τι συμβαίνει. 970 00:39:22,850 --> 00:39:23,530 Έχουμε έναν int. 971 00:39:23,530 --> 00:39:25,640 Int x ισούται με 5. 972 00:39:25,640 --> 00:39:26,950 Χ έχει τιμή 5. 973 00:39:26,950 --> 00:39:31,240 Και έχουμε προετοιμαστεί αυτό το δείκτη, int y int αστέρων y ισούται με τη διεύθυνση του x. 974 00:39:31,240 --> 00:39:33,660 >> Ας υποθέσουμε ότι η διεύθυνση του x είναι 4. 975 00:39:33,660 --> 00:39:36,960 Τι πρόκειται να συμβεί τώρα αν μπορώ άθροισμα προσθέσετε 1 έως y; 976 00:39:36,960 --> 00:39:39,110 977 00:39:39,110 --> 00:39:44,790 Είναι πρόκειται να πραγματικά άθροισμα 4 αντί των μόλις 1. 978 00:39:44,790 --> 00:39:50,920 Έτσι μπορώ να προσθέσω ένα 1, αλλά στην πραγματικότητα προστίθενται 4, επειδή ο υπολογιστής είναι έξυπνος. 979 00:39:50,920 --> 00:39:55,275 Έτσι, πρόκειται να προσθέσει στην πραγματικότητα από i φορές το μέγεθος του τύπου του δείκτη. 980 00:39:55,275 --> 00:39:56,340 981 00:39:56,340 --> 00:39:56,840 Εντάξει; 982 00:39:56,840 --> 00:39:58,030 983 00:39:58,030 --> 00:40:02,440 >> Έτσι, αν αυτό ήταν ένα char, για παράδειγμα, αν αυτό ήταν ένα y char αστέρων, 984 00:40:02,440 --> 00:40:07,141 και αν προσθέσαμε 1 τότε αυτό θα είναι 5, διότι char είναι μήκους 1 byte. 985 00:40:07,141 --> 00:40:07,640 Καλό; 986 00:40:07,640 --> 00:40:10,560 987 00:40:10,560 --> 00:40:13,190 >> Και, τέλος, φτάσαμε στο δεικτών και πινάκων. 988 00:40:13,190 --> 00:40:16,451 Αποδεικνύεται ότι κάθε χρόνο έχουμε να κάνουμε με μια σειρά, 989 00:40:16,451 --> 00:40:18,075 είστε πράγματι ασχολείται με ένα δείκτη. 990 00:40:18,075 --> 00:40:19,720 991 00:40:19,720 --> 00:40:24,777 Το πολύ ωραίο εννοιολογικό λόγο για Αυτό είναι ότι οι συστοιχίες είναι πολύ μεγάλο. 992 00:40:24,777 --> 00:40:27,360 Έτσι θυμηθείτε ότι είπα ότι κάθε φορά που περνάτε πράγματα γύρω, 993 00:40:27,360 --> 00:40:29,097 μπορείτε να αντιγράψετε τα πάντα. 994 00:40:29,097 --> 00:40:31,180 Έτσι, εάν έχετε μια σειρά ότι είναι πραγματικά, πραγματικά μεγάλο, 995 00:40:31,180 --> 00:40:32,990 που πραγματικά δεν θέλουν να αντιγράψετε τα πάντα κάθε φορά 996 00:40:32,990 --> 00:40:35,710 μπορείτε να περάσετε γύρω στο άλλο λειτουργία, γιατί αυτό είναι ακριβώς 997 00:40:35,710 --> 00:40:37,190 τεράστια ποσά της εργασίας. 998 00:40:37,190 --> 00:40:39,710 Έτσι, αυτό που κάνεις είναι μόνο το παρελθόν η διεύθυνση του πρώτου byte. 999 00:40:39,710 --> 00:40:40,969 1000 00:40:40,969 --> 00:40:44,010 Και τότε η λειτουργία θα έχει πρόσβαση σε όλα τα στοιχεία στην εν λόγω συστοιχία. 1001 00:40:44,010 --> 00:40:48,670 Έτσι θα περάσει τη σειρά από τη διεύθυνσή της, έτσι ώστε η διεύθυνση του πρώτου byte. 1002 00:40:48,670 --> 00:40:53,010 >> Έτσι, αν έχουμε δηλώσει int σειρά 3, εδώ, γνωρίζουμε 1003 00:40:53,010 --> 00:40:57,470 πώς να αποκτήσετε πρόσβαση στο πρώτο στοιχείο χρησιμοποιώντας το συμβολισμό βραχίονα. 1004 00:40:57,470 --> 00:41:02,410 Αν θυμάστε το στήριγμα σημειογραφία, βραχίονα συστοιχία 0 ισούται με 1. 1005 00:41:02,410 --> 00:41:06,330 Λοιπόν, αυτό θα ήταν ακριβώς το ίδια όπως ακριβώς να πάτε εκεί και να θέσει 1. 1006 00:41:06,330 --> 00:41:07,370 1007 00:41:07,370 --> 00:41:09,110 Εντάξει, είναι ακριβώς το ίδιο πράγμα. 1008 00:41:09,110 --> 00:41:13,010 Έτσι, το συμβολισμό βραχίονα εδώ θα είναι η ίδια με αυτή τη γραμμή. 1009 00:41:13,010 --> 00:41:18,600 >> Και μαντέψτε τι το συμβολισμό βραχίονα για στήριγμα σειρά 1 θα είναι; 1010 00:41:18,600 --> 00:41:20,440 Είναι ακριβώς θα είναι το ίδιο πράγμα με αυτό. 1011 00:41:20,440 --> 00:41:22,500 Έτσι, προσθέστε ένα σε σειρά. 1012 00:41:22,500 --> 00:41:24,370 Μετακίνηση κατά ένα μήκος στη μνήμη. 1013 00:41:24,370 --> 00:41:26,310 Πηγαίνετε εκεί, και να θέσει ένα 2. 1014 00:41:26,310 --> 00:41:28,050 1015 00:41:28,050 --> 00:41:28,579 Εντάξει; 1016 00:41:28,579 --> 00:41:29,870 Και αυτή η γραμμή είναι το ίδιο πράγμα. 1017 00:41:29,870 --> 00:41:34,860 Θέλουμε να πάμε στο τρίτο κουτί, έτσι συστοιχία συν 2. 1018 00:41:34,860 --> 00:41:37,465 Πηγαίνετε εκεί, και να θέσει ένα 3. 1019 00:41:37,465 --> 00:41:39,340 Έτσι, στη μνήμη, ό, τι είναι πρόκειται να συμβεί είναι ότι είμαστε 1020 00:41:39,340 --> 00:41:44,400 πρόκειται να έχει 1, 2, και 3, καθώς η τρία στοιχεία της παρούσας διάταξης. 1021 00:41:44,400 --> 00:41:46,970 >> Θα μπορούσαμε να είχαμε κάνει αυτό χρησιμοποιώντας εξοικειωμένοι βραχίονα σημειογραφία μας. 1022 00:41:46,970 --> 00:41:49,410 Απλά θέλω εσείς να ξέρετε ότι είναι το ίδιο πράγμα. 1023 00:41:49,410 --> 00:41:50,530 1024 00:41:50,530 --> 00:41:53,010 Εντάξει, ερωτήσεις σχετικά με αυτό; 1025 00:41:53,010 --> 00:41:56,115 1026 00:41:56,115 --> 00:41:56,615 Νίκαιας. 1027 00:41:56,615 --> 00:41:57,990 1028 00:41:57,990 --> 00:41:59,880 Τώρα, είμαι πρόκειται να παραδώσει το πάνω στο Hannah, 1029 00:41:59,880 --> 00:42:00,330 >> ΧΑΝΑ: Yay, Yee-Haw. 1030 00:42:00,330 --> 00:42:02,246 >> Binky: Μιλώντας για μνήμη και την ουσία του άρθρου. 1031 00:42:02,246 --> 00:42:06,554 [Χειροκρότημα] 1032 00:42:06,554 --> 00:42:10,150 >> ΧΑΝΑ: Γεια σου, δροσερό, έτσι είμαστε πρόκειται να μιλήσω λίγο περισσότερο 1033 00:42:10,150 --> 00:42:13,090 για τη μνήμη, την οποία εμείς απλά αντιμετωπιστούν με τη χρήση δεικτών. 1034 00:42:13,090 --> 00:42:16,060 Έτσι, υπάρχουν δύο κύρια μέρη του μνήμη που μας ανησυχεί. 1035 00:42:16,060 --> 00:42:18,830 Έχουμε τη στοίβα, η οποία αναπτύσσεται μέχρι και στο κάτω μέρος, και σωρός, η οποία 1036 00:42:18,830 --> 00:42:20,600 κατεβαίνει από την κορυφή. 1037 00:42:20,600 --> 00:42:24,690 Και η στοίβα πρόκειται να κρατήσει όλων των μεταβλητών παράδειγμα μας. 1038 00:42:24,690 --> 00:42:28,860 Έτσι, κάθε καλεί σε συνάρτηση παίρνει δικό του μικρό σκελετό του στη στοίβα. 1039 00:42:28,860 --> 00:42:32,160 Έτσι όπως Gabe αναφέρθηκε νωρίτερα, αν εμείς καλούν ξανά και ξανά τη λειτουργία, 1040 00:42:32,160 --> 00:42:34,180 θα πάμε να τακτοποιήσουν τα πράγματα στη στοίβα. 1041 00:42:34,180 --> 00:42:35,220 1042 00:42:35,220 --> 00:42:38,570 >> Και ομοίως, ο σωρός, η οποία ξεκινά από την κορυφή 1043 00:42:38,570 --> 00:42:42,660 πρόκειται να κρατήσει όλα της μνήμης ότι εμείς δυναμικά διαθέσουν. 1044 00:42:42,660 --> 00:42:45,110 Και έτσι όπως εμείς δυναμικά εκχωρήσει μνήμη, 1045 00:42:45,110 --> 00:42:47,580 Αυτό θα κατέβει προς τα κάτω. 1046 00:42:47,580 --> 00:42:51,340 Ζευγάρι πράγματα που πρέπει να γνωρίζετε όταν είμαστε με τη στοίβα και το σωρό, 1047 00:42:51,340 --> 00:42:55,200 με τη στοίβα, αν έχουμε πάρα πολύ many-- ας say-- αναδρομικές κλήσεις, 1048 00:42:55,200 --> 00:42:58,392 και είμαστε καλώντας μια συνάρτηση και πάλι, και ξανά, και ξανά, και ξανά, 1049 00:42:58,392 --> 00:43:00,350 και αυτό είναι στοίβαγμα, στοίβαγμα, στοίβαγμα. 1050 00:43:00,350 --> 00:43:01,570 Και αυτό πρόκειται να συντριβή στο σωρό. 1051 00:43:01,570 --> 00:43:03,040 Εμείς πάμε να ξεμείνει από μνήμη. 1052 00:43:03,040 --> 00:43:05,100 Αυτό πρόκειται να προκαλέσει μια πρόβλημα για τον υπολογιστή. 1053 00:43:05,100 --> 00:43:06,770 Και αυτό ονομάζεται η υπερχείλιση στοίβας. 1054 00:43:06,770 --> 00:43:09,728 Έτσι, αυτό είναι σίγουρα κάτι που πρέπει να γνωρίζει και να προσπαθήσουμε να αποφύγουμε. 1055 00:43:09,728 --> 00:43:10,228 1056 00:43:10,228 --> 00:43:14,050 Και ο σωρός, πρέπει να θυμόμαστε να μην διαρρέουν τυχαία μνήμη. 1057 00:43:14,050 --> 00:43:17,950 Κάθε φορά που χρησιμοποιείτε malloc, δεν ξεχάσετε να ελευθερώσει εκείνη την μνήμη. 1058 00:43:17,950 --> 00:43:20,040 Διαφορετικά, θα πρέπει ακριβώς είναι στο σωρό σπατάλη, 1059 00:43:20,040 --> 00:43:23,230 και ο υπολογιστής δεν θα γνωρίζουν ότι είναι ελεύθερη να χρησιμοποιήσει αυτή την μνήμη. 1060 00:43:23,230 --> 00:43:25,810 Αυτά λοιπόν είναι μερικά πράγματα να είναι πολύ προσεκτικοί με όταν 1061 00:43:25,810 --> 00:43:28,580 έχουμε να κάνουμε με η στοίβα και ο σωρός. 1062 00:43:28,580 --> 00:43:30,412 Οποιεσδήποτε ερωτήσεις με αυτό; 1063 00:43:30,412 --> 00:43:31,304 Awesome. 1064 00:43:31,304 --> 00:43:31,900 >> Εντάξει, δροσερό. 1065 00:43:31,900 --> 00:43:32,940 1066 00:43:32,940 --> 00:43:36,810 Έτσι, αυτό το είδος έχει το ίδιο ιδέα ως υπερχείλιση στοίβας, όπου 1067 00:43:36,810 --> 00:43:39,850 θα πάμε πέρα ​​από το όρια του τι μνήμη 1068 00:43:39,850 --> 00:43:41,960 είναι υποτίθεται ότι πρέπει να είναι σε θέση να χρησιμοποιήσει. 1069 00:43:41,960 --> 00:43:45,077 Πάρτε λοιπόν, για παράδειγμα, ένα ρυθμιστικό διάλυμα, ή σας θα μπορούσε απλά να σκεφτεί ότι αυτό ως μια σειρά. 1070 00:43:45,077 --> 00:43:47,660 Και είπαμε, εντάξει, θα πάμε να να δημιουργήσει αυτό το ωραίο μικρό πίνακα. 1071 00:43:47,660 --> 00:43:49,140 Είναι πρόκειται να είναι ένα string. 1072 00:43:49,140 --> 00:43:50,630 Ή πρόκειται για την αποθήκευση χαρακτήρων. 1073 00:43:50,630 --> 00:43:51,720 Και είναι ακριβώς πρόκειται να πω ένα γεια. 1074 00:43:51,720 --> 00:43:52,678 Και αυτό είναι απροσδιόριστο. 1075 00:43:52,678 --> 00:43:53,990 Έτσι μπράβο. 1076 00:43:53,990 --> 00:43:58,240 >> Αλλά αν ήταν κάποιος το κακό και ήθελε να κάνει κάτι κακό με αυτό το φάσμα, τι 1077 00:43:58,240 --> 00:44:02,310 Θα μπορούσα να κάνω είναι να προσπαθήσει να γράψει μετά το τέλος του string. 1078 00:44:02,310 --> 00:44:04,490 Και όπως θα δείτε, αν Γράφω αρκετά μακριά, 1079 00:44:04,490 --> 00:44:06,980 Μπορώ να επηρεάσει πραγματικά η διεύθυνση επιστροφής. 1080 00:44:06,980 --> 00:44:09,530 Και αν αρχίσω να επηρεάσει η διεύθυνση επιστροφής, 1081 00:44:09,530 --> 00:44:11,730 Έχω να επηρεάσει το πώς το πρόγραμμα πραγματικά τρέχει. 1082 00:44:11,730 --> 00:44:15,900 Και αντί να επιστρέψει, θα ξέρετε, μια ευτυχισμένη συμβολοσειρά όπως γειά σου, εγώ 1083 00:44:15,900 --> 00:44:19,460 θα μπορούσε να κάνει κάτι κακό, όπως πάει να κάπου αλλού στον υπολογιστή σας, ακόμα 1084 00:44:19,460 --> 00:44:22,146 μνήμη, το αλλάξετε, ό, τι θέλω να κάνω. 1085 00:44:22,146 --> 00:44:25,020 Έτσι, αυτό είναι ό, τι αυτό θα μοιάζει είναι αν εγώ ακριβώς το είδος του γέμισε 1086 00:44:25,020 --> 00:44:27,400 με τυχαία τιμή σκουπίδια, σε αυτή την περίπτωση, μόνο ένα. 1087 00:44:27,400 --> 00:44:30,490 Και τότε, όταν στην πραγματικότητα πήρε την διεύθυνση της μνήμης, 1088 00:44:30,490 --> 00:44:33,740 Άρχισα να το γεμίσετε με κάτι ότι έκανα αυτό που ήθελα να κάνω. 1089 00:44:33,740 --> 00:44:34,952 1090 00:44:34,952 --> 00:44:36,410 Οποιεσδήποτε ερωτήσεις με υπερχείλιση; 1091 00:44:36,410 --> 00:44:38,450 1092 00:44:38,450 --> 00:44:40,730 Φοβερό, φέρουν δεξιά μέσα από αυτά τα πράγματα. 1093 00:44:40,730 --> 00:44:43,530 >> Εντάξει, έτσι μιλήσαμε πολύ για δείκτη με Gabe. 1094 00:44:43,530 --> 00:44:45,790 Πώς θα πάρετε πραγματικά ένα δείκτη; 1095 00:44:45,790 --> 00:44:48,070 Πώς θα πάρετε μια διεύθυνση στη μνήμη; 1096 00:44:48,070 --> 00:44:51,040 Λοιπόν, μπορούμε να χρησιμοποιήσουμε αυτό το ωραίο συνάρτηση malloc η κλήση, η οποία 1097 00:44:51,040 --> 00:44:53,370 πρόκειται να πάρει ένα μικρό κομμάτι της μνήμης, 1098 00:44:53,370 --> 00:44:55,480 Ειδικότερα, στη σωρός, όπως συζητήσαμε, 1099 00:44:55,480 --> 00:44:59,780 και πρόκειται να σας δώσει πίσω ένα δείκτη σε αυτή τη διεύθυνση στη μνήμη. 1100 00:44:59,780 --> 00:45:01,950 Και το επιχείρημα ότι εμείς πρέπει να δώσει στην malloc 1101 00:45:01,950 --> 00:45:04,280 είναι πόσος χώρος στη μνήμη που θέλουμε. 1102 00:45:04,280 --> 00:45:06,100 >> Έτσι, μπορείτε να δείτε το μέγεθος σε byte. 1103 00:45:06,100 --> 00:45:08,670 Ας πούμε, για παράδειγμα, ή Στην πραγματικότητα, σε αυτό το παράδειγμα, 1104 00:45:08,670 --> 00:45:12,040 διαθέτουμε αρκετά χώρος για 10 ακέραιοι. 1105 00:45:12,040 --> 00:45:15,640 Έτσι, κατά πάσα πιθανότητα αυτό θα πάμε να θέλουν να τεθεί εδώ είναι ένας πίνακας 10 ακεραίων. 1106 00:45:15,640 --> 00:45:19,641 Έτσι, δίνουμε το μέγεθος των πόντους, κάτι που Μάθαμε ήταν πόσα bytes; 1107 00:45:19,641 --> 00:45:20,140 Φοιτητής: 4. 1108 00:45:20,140 --> 00:45:22,920 ΧΑΝΑ: 4, όμορφη, και εμείς θέλουν 10 από αυτούς σε μια σειρά, 1109 00:45:22,920 --> 00:45:28,050 έτσι ώστε να έχουμε αρκετό χώρο για να αποθηκεύουν όλα τα 10 ακέραιοι, σε αυτή την περίπτωση. 1110 00:45:28,050 --> 00:45:31,290 Κάτι εξαιρετικά σημαντικό, κάθε φορά που θα καλέσετε malloc, 1111 00:45:31,290 --> 00:45:32,880 θα πρέπει να ελέγξετε για μηδενική. 1112 00:45:32,880 --> 00:45:37,310 Εάν δεν μπορείτε να ελέγξετε για μηδενική, και, malloc αν εξαντληθεί ο χώρος 1113 00:45:37,310 --> 00:45:40,400 και δεν μπορεί πλέον να σας δώσει οποιαδήποτε περισσότερη μνήμη, θα επιστρέψει null. 1114 00:45:40,400 --> 00:45:42,060 1115 00:45:42,060 --> 00:45:45,630 Έτσι, αν δεν έχετε ελέγξει, malloc μπορεί να επιστρέψει null. 1116 00:45:45,630 --> 00:45:51,265 Και στη συνέχεια, αν προσπαθήσουμε να dereference ένα κενό δείκτη, 1117 00:45:51,265 --> 00:45:54,960 θα πάμε να πάρετε ένα σφάλμα κατάτμησης, το οποίο θα μιλήσουμε για το δικαίωμα τώρα. 1118 00:45:54,960 --> 00:45:56,150 1119 00:45:56,150 --> 00:45:56,650 Awesome. 1120 00:45:56,650 --> 00:45:58,300 >> Εντάξει, ερωτήσεις με malloc; 1121 00:45:58,300 --> 00:46:00,044 1122 00:46:00,044 --> 00:46:00,544 Ναι; 1123 00:46:00,544 --> 00:46:05,460 >> Φοιτητής: Μήπως έλεγχο null [Δεν ακούγεται] δεν το κάνουμε για το κουίζ; 1124 00:46:05,460 --> 00:46:08,100 >> ΧΑΝΑ: Σίγουρα, η ερώτηση ήταν μήπως matter-- στο κουίζ, 1125 00:46:08,100 --> 00:46:10,420 θα μπορείτε να πάρετε τα σημεία εκτός εάν δεν ελέγχει για null; 1126 00:46:10,420 --> 00:46:12,794 Ναι, θα πάρετε πόντους μακριά αν δεν ελέγξετε για μηδενική. 1127 00:46:12,794 --> 00:46:16,030 Κάθε φορά που καλείτε malloc, τόσο για το κουίζ και psets σας και στην πραγματική ζωή, 1128 00:46:16,030 --> 00:46:17,155 θα πρέπει να ελέγξετε για μηδενική. 1129 00:46:17,155 --> 00:46:18,330 Καλή ερώτηση. 1130 00:46:18,330 --> 00:46:19,689 >> Gabe: Τι μπορώ να κάνω εάν δεν απελευθερώσει; 1131 00:46:19,689 --> 00:46:21,730 ΧΑΝΑ: Gabe θέλει να ξέρει Τι κι αν δεν το κάνουμε δωρεάν. 1132 00:46:21,730 --> 00:46:25,030 Τότε θα έχουμε μια Διαρροή μνήμης στο σωρό μας. 1133 00:46:25,030 --> 00:46:26,140 Οποιεσδήποτε άλλες ερωτήσεις; 1134 00:46:26,140 --> 00:46:27,550 Ναι; 1135 00:46:27,550 --> 00:46:30,120 >> Φοιτητής: Μπορεί you-- πάει πάνω υπερχείλιση πραγματικός γρήγορος και πάλι; 1136 00:46:30,120 --> 00:46:30,530 >> ΧΑΝΑ: Σίγουρα. 1137 00:46:30,530 --> 00:46:33,071 Το ζήτημα ήταν να πάμε πάνω υπερχείλιση πραγματικά γρήγορα. 1138 00:46:33,071 --> 00:46:35,050 Ας επιστρέψουμε σε αυτές τις διαφάνειες. 1139 00:46:35,050 --> 00:46:37,430 Έτσι, ένα ρυθμιστικό, μπορείτε απλά σκεφτείτε το σαν μια σειρά, έτσι δεν είναι; 1140 00:46:37,430 --> 00:46:39,360 Έχετε κάποιο χώρο στη μνήμη. 1141 00:46:39,360 --> 00:46:43,580 Και όταν εμείς πρώτα να δημιουργήσετε συστοιχία μας, γνωρίζουμε συστοιχίες έχουν σταθερό μέγεθος, 1142 00:46:43,580 --> 00:46:45,470 ή ρυθμιστικό μας έχει ένα σταθερό μέγεθος. 1143 00:46:45,470 --> 00:46:51,360 >> Ας πούμε ότι σε αυτή την περίπτωση, έχουμε μόνο αρκετό χώρο για να γράψετε το string γεια. 1144 00:46:51,360 --> 00:46:57,340 Αν πάμε παρελθόν αυτό το όριο, αν πάμε παρελθόν τι σειρά μας είπε ότι θα μπορούσε να κρατήσει, 1145 00:46:57,340 --> 00:46:59,780 θα μπορούσαμε πραγματικά να αρχίσετε γράφοντας στη μνήμη 1146 00:46:59,780 --> 00:47:01,780 ότι ο υπολογιστής δεν θέλει να γράψετε σε. 1147 00:47:01,780 --> 00:47:02,810 1148 00:47:02,810 --> 00:47:05,580 Και συγκεκριμένα, αν χτυπάμε κάτι σαν την επιστροφή 1149 00:47:05,580 --> 00:47:08,700 αντιμετώπιση της λειτουργίας, η οποία, όπως και κάθε άλλο κομμάτι της μνήμης, 1150 00:47:08,700 --> 00:47:11,420 είναι απλά κάπου στο σας υπολογιστή, μπορείτε πραγματικά 1151 00:47:11,420 --> 00:47:14,080 αλλάξει αυτό και να αρχίσει να κάνει κακά πράγματα. 1152 00:47:14,080 --> 00:47:15,272 Απαντήσω στην ερώτησή σας; 1153 00:47:15,272 --> 00:47:16,230 Φοβερό, κάτι άλλο; 1154 00:47:16,230 --> 00:47:17,466 Ναι; 1155 00:47:17,466 --> 00:47:21,948 >> Φοιτητής: Έτσι στοίβα [δεν ακούγεται], μπορείτε είπε πάμε από το κάτω ανεβαίνει. 1156 00:47:21,948 --> 00:47:25,434 Στο εύρος στοίβα, κάνει η μνήμη πάει από, όπως, 1157 00:47:25,434 --> 00:47:27,230 πάνω προς τα κάτω που αφορούν σε κάθε διάλειμμα; 1158 00:47:27,230 --> 00:47:28,646 1159 00:47:28,646 --> 00:47:32,100 >> ΧΑΝΑ: Πώς you-- αναβάλει τον Rob σε αυτό το σημείο. 1160 00:47:32,100 --> 00:47:35,370 1161 00:47:35,370 --> 00:47:38,213 >> ROB: Θα αυξηθεί στο ίδιο κατεύθυνση όπως τη στοίβα μεγαλώνει. 1162 00:47:38,213 --> 00:47:38,712 ΧΑΝΑ: Εντάξει. 1163 00:47:38,712 --> 00:47:40,967 ROB: Έτσι έχω μπερδευτεί. 1164 00:47:40,967 --> 00:47:42,331 Αυτό πρόκειται να είναι αφαίρεση. 1165 00:47:42,331 --> 00:47:42,831 ΧΑΝΑ: Εντάξει. 1166 00:47:42,831 --> 00:47:44,000 ROB: Αυτό είναι σωστό. 1167 00:47:44,000 --> 00:47:49,420 Έτσι, αν η στοίβα μεγαλώνει επάνω, τότε generally-- 1168 00:47:49,420 --> 00:47:52,380 δεν πρέπει να είναι σαν αυτό. αλλά μπορείτε να δηλώσετε int x. 1169 00:47:52,380 --> 00:47:54,120 Στη συνέχεια, μπορείτε να κηρύξει int y. 1170 00:47:54,120 --> 00:47:57,300 Στη συνέχεια, int x θα είναι γενικά κάτω στη στοίβα από int y. 1171 00:47:57,300 --> 00:47:59,300 Αλλά αυτό είναι μόνο ένα γεγονός. 1172 00:47:59,300 --> 00:48:02,410 Αυτό δεν είναι σαν ένα σημαντικό πράγμα σπόρων. 1173 00:48:02,410 --> 00:48:06,800 >> ROB: Έτσι, το ερώτημα και πάλι ήταν απλά τι συμβαίνει κάθε καρέ συσσωρεύεται. 1174 00:48:06,800 --> 00:48:08,960 Έτσι κάθε συνάρτηση παίρνει μια μικρό κομμάτι της στοίβας. 1175 00:48:08,960 --> 00:48:13,030 Και όπως μπορείτε να ανεβείτε, μέσα σε αυτό μικρό κομμάτι, μέσα σε αυτό το πλαίσιο, 1176 00:48:13,030 --> 00:48:16,710 εμείς θα πούμε ότι οι μεταβλητές μέσα σε αυτό το πλαίσιο, επίσης, ανεβάσουμε. 1177 00:48:16,710 --> 00:48:17,473 Ερώτηση; 1178 00:48:17,473 --> 00:48:18,688 >> ROB: Ακριβώς για να είναι στο μικρόφωνο. 1179 00:48:18,688 --> 00:48:19,396 ΧΑΝΑ: Ω, ναι. 1180 00:48:19,396 --> 00:48:20,440 ROB: Θα μιλήσω σε σας. 1181 00:48:20,440 --> 00:48:21,410 ΧΑΝΑ: Ω, ναι, εντάξει. 1182 00:48:21,410 --> 00:48:24,150 ROB: Η εξαίρεση είναι για τις συστοιχίες και structs, 1183 00:48:24,150 --> 00:48:27,470 όπου συστοιχίες, ένα κατώτερο δείκτης στη συστοιχία, 1184 00:48:27,470 --> 00:48:29,930 και σε structs σε υψηλότερες τομέα στα structs 1185 00:48:29,930 --> 00:48:35,040 είναι εγγυημένη για να είναι σε χαμηλότερες διευθύνσεις από μια μεταγενέστερη τιμή στη συστοιχία. 1186 00:48:35,040 --> 00:48:36,720 Επομένως, αυτά είναι εγγυημένα. 1187 00:48:36,720 --> 00:48:40,310 Αλλά οποιεσδήποτε συγκεκριμένες μεταβλητές μέσα, όπως int x και int y μέσα σε μια συνάρτηση, 1188 00:48:40,310 --> 00:48:43,030 δεν υπάρχει απαραίτητα σχέση ανάμεσα στις διευθύνσεις τους. 1189 00:48:43,030 --> 00:48:44,882 1190 00:48:44,882 --> 00:48:46,340 ΧΑΝΑ: Μια άλλη ερώτηση εδώ; 1191 00:48:46,340 --> 00:48:51,620 Φοιτητής: Έτσι σε ρυθμιστικό ροής, μόνο ρυθμιστικό υπερχείλιση 1192 00:48:51,620 --> 00:48:54,980 συνέβη μόνο όταν έχουν, όπως, αποδίδεται 1193 00:48:54,980 --> 00:49:01,056 μία ποσότητα μίας συστοιχίας ότι τότε είναι μεγαλύτερη; 1194 00:49:01,056 --> 00:49:03,230 Όπως, μπορείς; 1195 00:49:03,230 --> 00:49:05,435 Έτσι, αν είστε ζητώντας κάτι από το user-- 1196 00:49:05,435 --> 00:49:06,018 >> ΧΑΝΑ: MM-HM. 1197 00:49:06,018 --> 00:49:08,600 Φοιτητής: Μπορούν να κάνουν με τη βία να σας δώσει κάτι πίσω 1198 00:49:08,600 --> 00:49:11,777 αυτό είναι μεγαλύτερο από ό, τι έχετε διατεθεί για αυτούς; 1199 00:49:11,777 --> 00:49:13,610 ΧΑΝΑ: Σίγουρα, έτσι ώστε η ερώτημα ήταν κατά βάση, 1200 00:49:13,610 --> 00:49:16,217 μπορεί ο χρήστης να σας δώσει περισσότερο από ό, τι μπορείτε να ζητήσετε; 1201 00:49:16,217 --> 00:49:16,800 Φοιτητής: Ναι. 1202 00:49:16,800 --> 00:49:18,480 ΧΑΝΑ: Λοιπόν, θα μπορούσε να αποτρέψει το χρήστη από το να κάνουν αυτό. 1203 00:49:18,480 --> 00:49:21,350 Θα μπορούσε συγκεκριμένα να πω δεν κάνει να μου δώσει περισσότερα από ό, τι χ αριθμό από bytes 1204 00:49:21,350 --> 00:49:24,330 Έχω να σας δοθεί μόνο δωμάτιο για αριθμό x των bytes, x αριθμό των χαρακτήρων. 1205 00:49:24,330 --> 00:49:25,700 Έτσι, αυτό είναι κάτι που θέλετε να αποτρέψει. 1206 00:49:25,700 --> 00:49:26,199 Ναι; 1207 00:49:26,199 --> 00:49:30,270 Ποια είναι η διαφορά μεταξύ Υπερχείλιση στοίβας και υπερχείλιση του buffer; 1208 00:49:30,270 --> 00:49:32,140 >> ΧΑΝΑ: Εντάξει, έτσι η στοίβα overflow-- ω, τι 1209 00:49:32,140 --> 00:49:34,790 είναι η διαφορά μεταξύ στοίβα υπερχείλιση και η υπερχείλιση του buffer; 1210 00:49:34,790 --> 00:49:37,581 Έτσι θέλουμε να σκεφτούμε υπερχείλισης στοίβας συμβαίνει όταν στην πραγματικότητα είμαστε 1211 00:49:37,581 --> 00:49:39,530 στοίβαγμα αυτές τις κλήσεις συναρτήσεων. 1212 00:49:39,530 --> 00:49:42,991 Ας πούμε ότι έχετε μια αναδρομική συνάρτηση, γιατί ξέρουμε ότι κάθε φορά που θα 1213 00:49:42,991 --> 00:49:45,240 καλέσετε μια συνάρτηση, που παίρνει δικό του πλαίσιο στη στοίβα. 1214 00:49:45,240 --> 00:49:47,950 >> Έτσι συσσωρεύονται πάρα πολύ υψηλή, και τότε θα αρχίσει να ξεχειλίζει. 1215 00:49:47,950 --> 00:49:50,530 Και χρησιμοποιούν πάρα πολλή μνήμη, και δεν έχουμε πουθενά αριστερά. 1216 00:49:50,530 --> 00:49:51,590 Παίρνουμε το σφάλμα. 1217 00:49:51,590 --> 00:49:53,930 >> Υπερχείλιση είναι εντός προγράμματος. 1218 00:49:53,930 --> 00:49:57,180 Θέλουμε να μην έχουν αναγκαστικά τρέχουν έξω από τη μνήμη κατά τον ίδιο τρόπο 1219 00:49:57,180 --> 00:50:00,080 ότι θα μπορούσαμε αν είμαστε στοίβαγμα μέχρι τόσες πολλές κλήσεις συναρτήσεων, 1220 00:50:00,080 --> 00:50:04,540 αλλά γράφουμε παρελθόν μνήμη που γνωρίζουμε ότι μπορούμε να χρησιμοποιήσουμε. 1221 00:50:04,540 --> 00:50:06,170 Και αυτό μας επιτρέπει να κάνουμε κακά πράγματα. 1222 00:50:06,170 --> 00:50:08,060 1223 00:50:08,060 --> 00:50:08,560 Ναι; 1224 00:50:08,560 --> 00:50:10,950 >> ROB: Ναι, ίσως να θέλετε να επαναλάβω μόνο αυτό, 1225 00:50:10,950 --> 00:50:12,699 αλλά μπορείτε επίσης να σκεφτείτε της υπερχείλισης στοίβας 1226 00:50:12,699 --> 00:50:15,374 ως σαν ένα συγκεκριμένο τύπο της υπερχείλισης buffer. 1227 00:50:15,374 --> 00:50:17,665 Ή μπορείτε απλά σκεφτείτε σας στοίβα ως ένα πραγματικά μεγάλο ρυθμιστικό. 1228 00:50:17,665 --> 00:50:20,724 Στη συνέχεια, όταν θα σε πλημμυρίσουν μπορείτε στοίβα, Είναι σαν ένα είδος buffer overflow. 1229 00:50:20,724 --> 00:50:23,390 Αλλά μια υπερχείλιση στοίβας είναι μόνο ένα ειδικά όρος που χρησιμοποιείται όταν η στοίβα 1230 00:50:23,390 --> 00:50:24,310 ίδια ξεχειλίζει. 1231 00:50:24,310 --> 00:50:27,500 >> ΧΑΝΑ: Δεξιά, έτσι ώστε να Επαναλαμβάνω για το βίντεο, 1232 00:50:27,500 --> 00:50:31,756 αυτό μπορείτε να σκεφτείτε υπερχείλισης στοίβας ως ένα συγκεκριμένο είδος της υπερχείλισης buffer. 1233 00:50:31,756 --> 00:50:33,040 Cool; 1234 00:50:33,040 --> 00:50:34,562 Οποιεσδήποτε άλλες ερωτήσεις, πριν πάμε για; 1235 00:50:34,562 --> 00:50:35,380 1236 00:50:35,380 --> 00:50:35,880 Awesome. 1237 00:50:35,880 --> 00:50:37,130 1238 00:50:37,130 --> 00:50:39,727 >> Εντάξει, δροσερό, οπότε ας μιλήσουμε για ορισμένα κοινά μηνύματα λάθους. 1239 00:50:39,727 --> 00:50:42,060 Αυτό είναι κάτι που έχει εμφανίζονται επάνω σε πολλαπλές κουίζ, 1240 00:50:42,060 --> 00:50:44,740 έτσι κάτι που αξίζει λαμβάνοντας μια δεύτερη ματιά. 1241 00:50:44,740 --> 00:50:46,860 Είμαι βέβαιος ότι έχετε αντιμετωπίσει τουλάχιστον μερικά από αυτά 1242 00:50:46,860 --> 00:50:48,690 όπως κάνετε το πρόβλημά σας θέτει. 1243 00:50:48,690 --> 00:50:50,980 Έτσι, βεβαιωθείτε ότι μπορείτε να μιλήσετε γι 'αυτούς στο κουίζ. 1244 00:50:50,980 --> 00:50:52,990 >> Έτσι, το πρώτο είναι ένα σφάλμα κατάτμησης. 1245 00:50:52,990 --> 00:50:55,250 Και αυτό είναι κάθε φορά που προσπαθήσετε να αποκτήσετε πρόσβαση μνήμης 1246 00:50:55,250 --> 00:50:57,130 ότι εμείς δεν σας επιτρέπεται η πρόσβαση. 1247 00:50:57,130 --> 00:51:00,280 Έτσι, μπορείτε migh έχετε δει αυτό, για παράδειγμα, στο ξεμπλοκάρισμα. 1248 00:51:00,280 --> 00:51:03,390 Εάν ανιχνεύσει σύγκρουση null επιστρέφουν, και στη συνέχεια θα 1249 00:51:03,390 --> 00:51:05,500 Προσπάθησα να κάνω κάτι με την εν λόγω τιμή null, 1250 00:51:05,500 --> 00:51:08,147 ο υπολογιστής θα δώσει Είσαι ένα σφάλμα κατάτμησης. 1251 00:51:08,147 --> 00:51:10,730 Έτσι, ένα, ένα σημαντικό πράγμα που πρέπει να κάνουμε, προκειμένου να προσπαθήσει να αποφύγει αυτό 1252 00:51:10,730 --> 00:51:12,000 είναι να ελέγχετε πάντα για μηδενική. 1253 00:51:12,000 --> 00:51:13,300 1254 00:51:13,300 --> 00:51:16,180 >> Μπορεί να έχετε δει επίσης σιωπηρή δήλωση του λειτουργία. 1255 00:51:16,180 --> 00:51:18,370 Έτσι, αυτό είναι ό, τι συμβαίνει όταν Allison σας έδειξα 1256 00:51:18,370 --> 00:51:20,150 πώς μπορούμε να κάνουμε ένα πρωτότυπο, σωστά; 1257 00:51:20,150 --> 00:51:23,440 Ας πούμε ότι έχουμε κάποιες λειτουργία που ορίζουμε. 1258 00:51:23,440 --> 00:51:24,440 Ας πούμε κύβο. 1259 00:51:24,440 --> 00:51:27,120 Και αυτό πηγαίνει στο κάτω μέρος της λειτουργίας μας, υπό το κύριο. 1260 00:51:27,120 --> 00:51:35,205 >> Αν ξεχάσετε να ενημερώσει τον υπολογιστή για κύβος, όταν ο κύριος προσπαθεί να καλέσει κύβο, 1261 00:51:35,205 --> 00:51:36,830 ο υπολογιστής θα είναι, όπως, Θεέ μου. 1262 00:51:36,830 --> 00:51:38,300 Δεν έχω καμία ιδέα για το τι σημαίνει αυτό. 1263 00:51:38,300 --> 00:51:39,760 Δεν ξέρω τι να κάνω, εδώ. 1264 00:51:39,760 --> 00:51:41,594 Έτσι, το πρωτότυπο λέει μην ανησυχείτε. 1265 00:51:41,594 --> 00:51:42,510 Πάω να σας πω. 1266 00:51:42,510 --> 00:51:43,132 >> Θα έρθει. 1267 00:51:43,132 --> 00:51:43,840 Μην φωνάζεις εμένα. 1268 00:51:43,840 --> 00:51:46,697 Μην μου δώσει μια σιωπηρή δήλωση του λειτουργία. 1269 00:51:46,697 --> 00:51:49,280 Έτσι, αν έχετε αυτό το σφάλμα, ένα πράγμα που θα πάμε να θέλουν να κάνουν 1270 00:51:49,280 --> 00:51:50,821 είναι να βεβαιωθείτε ότι έχετε το πρωτότυπο σας. 1271 00:51:50,821 --> 00:51:52,320 1272 00:51:52,320 --> 00:51:53,230 Εντάξει; 1273 00:51:53,230 --> 00:51:55,680 >> Και τελευταίο αλλά όχι λιγότερο σημαντικό, αδήλωτης αναγνωριστικό 1274 00:51:55,680 --> 00:52:00,570 είναι κατ 'ουσίαν, όταν προσπαθείτε να χρησιμοποιήσετε μια μεταβλητή που δεν έχουν δηλωθεί. 1275 00:52:00,570 --> 00:52:03,449 Έτσι ξαφνικά αρχίζετε λέγοντας σαν ν συν συν. 1276 00:52:03,449 --> 00:52:04,740 Και ο υπολογιστής λέει ό, τι είναι ν? 1277 00:52:04,740 --> 00:52:06,660 Ποτέ δεν μου είπε ν ήταν ένα πράγμα. 1278 00:52:06,660 --> 00:52:10,930 >> Έτσι, ένα πράγμα θα πρέπει να βεβαιωθείτε ότι έχετε έκανε είναι να πείτε στον υπολογιστή το ν είναι. 1279 00:52:10,930 --> 00:52:13,320 Έτσι, για παράδειγμα, το η μπορεί να είναι ένας ακέραιος. 1280 00:52:13,320 --> 00:52:14,999 Και τότε θα αποφύγετε αυτό το σφάλμα. 1281 00:52:14,999 --> 00:52:16,290 Οποιεσδήποτε ερωτήσεις σχετικά με κοινά σφάλματα; 1282 00:52:16,290 --> 00:52:17,260 Ναι; 1283 00:52:17,260 --> 00:52:19,344 >> ΣΠΟΥΔΑΣΤΩΝ: Για την σιωπηρή δήλωση της λειτουργίας, 1284 00:52:19,344 --> 00:52:22,343 θα μπορούσε επίσης να είναι ότι έχετε παραλείψει μία των βιβλιοθηκών που υποτίθεται ότι 1285 00:52:22,343 --> 00:52:24,400 να περιλαμβάνει, αντί για το πρωτότυπο; 1286 00:52:24,400 --> 00:52:26,359 >> ΧΑΝΑ: Δεξιά, έτσι ώστε η ερώτηση ήταν, θα μπορούσε να σας 1287 00:52:26,359 --> 00:52:28,650 επίσης να πάρετε αυτό το σφάλμα εάν ξέχασε να συμπεριλάβει μια βιβλιοθήκη. 1288 00:52:28,650 --> 00:52:29,085 >> Φοιτητής: Ναι. 1289 00:52:29,085 --> 00:52:30,876 >> ΧΑΝΑ: Απολύτως, διότι κατά τον ίδιο τρόπο 1290 00:52:30,876 --> 00:52:33,540 ότι θέλουμε να θέσει τα πρωτότυπά μας πριν από την κύρια λειτουργία, 1291 00:52:33,540 --> 00:52:37,717 αν έχουμε μια βιβλιοθήκη, αυτές θα να περιλαμβάνει κυρίως τα πρωτότυπα, 1292 00:52:37,717 --> 00:52:39,425 περιλαμβάνουν τους ορισμούς των λειτουργιών. 1293 00:52:39,425 --> 00:52:40,585 Μεγάλη ερώτηση. 1294 00:52:40,585 --> 00:52:43,230 >> Φοιτητής: Για μια κατάτμηση υπαιτιότητα, θα ήταν αυτό επίσης 1295 00:52:43,230 --> 00:52:47,350 συμβεί αν, προσπάθησε εμείς όπως, για να αποκτήσετε πρόσβαση σε μια μεταβλητή, 1296 00:52:47,350 --> 00:52:51,947 παρόμοια, σε ένα διαφορετικό [δεν ακούγεται] από ό, τι είχε δηλωθεί; 1297 00:52:51,947 --> 00:52:54,030 ΧΑΝΑ: Σίγουρα, έτσι θα είμαστε πάρετε ένα σφάλμα κατάτμησης 1298 00:52:54,030 --> 00:52:56,270 αν προσπαθήσαμε να αποκτήσετε πρόσβαση σε ένα μεταβλητή έξω από το πεδίο εφαρμογής; 1299 00:52:56,270 --> 00:52:57,104 Ήταν μια ερώτηση; 1300 00:52:57,104 --> 00:52:57,645 Φοιτητής: Ναι. 1301 00:52:57,645 --> 00:52:58,430 ΧΑΝΑ: Όμορφη. 1302 00:52:58,430 --> 00:53:01,840 Έτσι, κατά πάσα πιθανότητα, θα πάμε να πάρετε ένα αδήλωτης σφάλμα αναγνωριστικό αντ 'αυτού. 1303 00:53:01,840 --> 00:53:04,006 Γι 'αυτό ακριβώς πρόκειται να πω Δεν ξέρω τι είναι αυτό. 1304 00:53:04,006 --> 00:53:04,920 1305 00:53:04,920 --> 00:53:05,920 Cool, οτιδήποτε άλλο; 1306 00:53:05,920 --> 00:53:07,744 1307 00:53:07,744 --> 00:53:08,980 Ναι, εντάξει, όμορφη. 1308 00:53:08,980 --> 00:53:10,330 1309 00:53:10,330 --> 00:53:12,400 >> Όλα righty, έτσι αναδρομή. 1310 00:53:12,400 --> 00:53:15,160 Έτσι ανέφερα ένα ζευγάρι φορές ότι θα μπορούσε να πάρει μια υπερχείλιση στοίβας 1311 00:53:15,160 --> 00:53:17,919 επειδή είμαστε καλώντας μας αναδρομική συνάρτηση τόσες πολλές φορές. 1312 00:53:17,919 --> 00:53:20,210 Παίρνουμε όλα αυτά στοίβα κουφώματα, μπλα, μπλα, μπλα. 1313 00:53:20,210 --> 00:53:22,420 Τι είναι ακόμη μια αναδρομική συνάρτηση; 1314 00:53:22,420 --> 00:53:25,680 Λοιπόν, μια αναδρομική συνάρτηση είναι οποιαδήποτε συνάρτηση που καλεί τον εαυτό της. 1315 00:53:25,680 --> 00:53:26,820 1316 00:53:26,820 --> 00:53:30,160 >> Μερικά πράγματα που πρέπει να γνωρίζετε όταν Οι εκτελεστικές αναδρομική συνάρτηση, 1317 00:53:30,160 --> 00:53:31,940 μην ξεχάσετε να συμπεριλάβετε μια βασική περίπτωση. 1318 00:53:31,940 --> 00:53:34,010 Μια βασική περίπτωση είναι η σημείο στο οποίο καταλήγουμε. 1319 00:53:34,010 --> 00:53:38,740 Έτσι, για παράδειγμα, αν είμαστε κωδικοποίησης, , Λένε, Fibonacci αναδρομικά, 1320 00:53:38,740 --> 00:53:43,210 θέλουμε να βεβαιωθείτε ότι όταν παίρνουμε στο ή τον πρώτο αριθμό Fibonacci 0, 1321 00:53:43,210 --> 00:53:46,220 Αυτοί οι δύο αριθμοί έχουν αυτές τις περιπτώσεις, επειδή εκείνοι δεν εξαρτώνται 1322 00:53:46,220 --> 00:53:47,700 για πράγματα που ήρθαν πριν. 1323 00:53:47,700 --> 00:53:48,990 Αυτοί έχουν τις δικές τους αξίες. 1324 00:53:48,990 --> 00:53:51,270 1325 00:53:51,270 --> 00:53:55,320 >> Μερικά πλεονεκτήματα για την αναδρομή, η οποία είναι μια ερώτημα που έχουμε δει στο παρελθόν κουίζ. 1326 00:53:55,320 --> 00:53:57,930 Μπορούν να οδηγήσει σε πιο συνοπτική, κομψό κώδικα. 1327 00:53:57,930 --> 00:54:00,510 Και πολλές λειτουργίες, μια πολλές διαφορετικές αλγορίθμων, 1328 00:54:00,510 --> 00:54:02,350 στην πραγματικότητα προσφέρονται για αναδρομή. 1329 00:54:02,350 --> 00:54:05,510 Ο ορισμός τους θα μπορούσε να είναι επαναληπτικό και της ίδιας. 1330 00:54:05,510 --> 00:54:06,980 Έτσι, Fibonacci είναι ένα. 1331 00:54:06,980 --> 00:54:07,860 Παραγοντικό είναι ένα. 1332 00:54:07,860 --> 00:54:10,480 Συγχώνευση sort είναι ένα-- όλα πράγματα που μπορείτε να δείτε στο. 1333 00:54:10,480 --> 00:54:12,650 1334 00:54:12,650 --> 00:54:13,460 Εντάξει, οποιεσδήποτε ερωτήσεις; 1335 00:54:13,460 --> 00:54:13,960 Ναι; 1336 00:54:13,960 --> 00:54:15,644 1337 00:54:15,644 --> 00:54:19,612 >> Φοιτητής: Υπάρχει μια περίπτωση γωνία παρόμοιο με το βασικό σενάριο; 1338 00:54:19,612 --> 00:54:22,590 Ή είναι ότι για κάποια άλλη το είδος του [δεν ακούγεται]; 1339 00:54:22,590 --> 00:54:25,170 >> ΧΑΝΑ: Σίγουρα, έτσι, ένα περίπτωση γωνία είναι any-- έτσι 1340 00:54:25,170 --> 00:54:27,580 είναι υπόθεση γωνία η ίδια ως βασική υπόθεση; 1341 00:54:27,580 --> 00:54:32,825 Μια υπόθεση γωνία είναι κάτι που σας κώδικας θα μπορούσε να συμπεριφέρονται λίγο διαφορετικά. 1342 00:54:32,825 --> 00:54:34,450 1343 00:54:34,450 --> 00:54:38,610 Περίπτωση Βάση είδος σχετίζεται, σε ότι είναι σαν ειδικές περιπτώσεις 1344 00:54:38,610 --> 00:54:40,240 ότι θέλετε να δείτε. 1345 00:54:40,240 --> 00:54:43,240 Αλλά η ιδέα μιας βάσης υπόθεσης είναι ότι θέλετε αναδρομική συνάρτηση σας 1346 00:54:43,240 --> 00:54:44,870 να σταματήσει σε κάποιο σημείο. 1347 00:54:44,870 --> 00:54:46,490 Δεν μπορεί να κρατήσει αυτοαποκαλείται για πάντα. 1348 00:54:46,490 --> 00:54:47,781 Πρέπει να σταματήσει σε κάποιο σημείο. 1349 00:54:47,781 --> 00:54:49,340 1350 00:54:49,340 --> 00:54:53,460 >> ROB: Ναι, συχνά, περιπτώσεις βάσης σας μπορεί να είναι παραδείγματα γωνιά βάσεις. 1351 00:54:53,460 --> 00:54:55,876 >> ΧΑΝΑ: Δεξιά, δροσερό, τίποτα; 1352 00:54:55,876 --> 00:54:58,732 >> Φοιτητής: Θα μπορούσατε να εξηγήσετε βασίζει λίγο περισσότερο; 1353 00:54:58,732 --> 00:55:01,600 Εγώ δεν καταλαβαίνω [Δεν ακούγεται] βάσης περιπτώσεις. 1354 00:55:01,600 --> 00:55:02,676 >> ΧΑΝΑ: Από τις περιπτώσεις βάσης; 1355 00:55:02,676 --> 00:55:03,140 >> Φοιτητής: Βάση περιπτώσεις, ναι. 1356 00:55:03,140 --> 00:55:03,770 >> ΧΑΝΑ: Ω ναι, σίγουρα. 1357 00:55:03,770 --> 00:55:04,270 Ας δούμε. 1358 00:55:04,270 --> 00:55:05,480 Μήπως έχουμε κιμωλία εδώ; 1359 00:55:05,480 --> 00:55:06,690 1360 00:55:06,690 --> 00:55:07,320 Ναι, το κάνουμε. 1361 00:55:07,320 --> 00:55:09,530 Εντάξει, έτσι πολύ γρήγορα, εγώ θα προσπαθήσει να γράψει αρκετά μεγάλο 1362 00:55:09,530 --> 00:55:11,320 ώστε να μπορείτε να δείτε στην οθόνη. 1363 00:55:11,320 --> 00:55:13,490 Ας μιλήσουμε για, πραγματικά γρήγορα, Fibonacci. 1364 00:55:13,490 --> 00:55:15,550 Γι 'αυτό θα σας δώσει την ακολουθία Fibonacci. 1365 00:55:15,550 --> 00:55:17,090 Μπορείτε να αναζητήσετε τον ορισμό. 1366 00:55:17,090 --> 00:55:26,050 >> Ουσιαστικά, κάθε αριθμός στην ακολουθία είναι το άθροισμα των δύο προηγούμενων αριθμών. 1367 00:55:26,050 --> 00:55:29,720 Εντάξει, οπότε ο τρόπος που μου που μόλις περιγράψαμε Fibonacci, 1368 00:55:29,720 --> 00:55:31,530 θα μπορούσατε να ακούσετε την αναδρομή, σωστά; 1369 00:55:31,530 --> 00:55:35,280 Όταν είπα κάθε αριθμός είναι το άθροισμα των δύο προηγούμενων αριθμών, 1370 00:55:35,280 --> 00:55:36,420 θα μπορούσαμε να πούμε, εντάξει. 1371 00:55:36,420 --> 00:55:38,570 Λοιπόν, η νιοστή Fibonacci number-- οπότε ας 1372 00:55:38,570 --> 00:55:42,260 ότι έχουμε αυτή τη λειτουργία ονομάζεται fib-- ψεματάκι του ν 1373 00:55:42,260 --> 00:55:48,260 πρόκειται να είναι ίσο με το ψεματάκι Ν μείον 1 plus-- συγγνώμη, 1374 00:55:48,260 --> 00:55:51,240 θα πηγαίνει στην επόμενη γραμμή πάνω here-- ψεματάκι του Ν μείον 2. 1375 00:55:51,240 --> 00:55:52,790 1376 00:55:52,790 --> 00:55:56,790 >> Εντάξει, έτσι αυτό λειτουργεί μεγάλο εάν είστε κοιτάζοντας, για παράδειγμα, το μηδέν, ένα, 1377 00:55:56,790 --> 00:55:59,410 δύο, τρεις, τέσσερις, πέμπτη αριθμός Fibonacci, 1378 00:55:59,410 --> 00:56:03,561 όπου μπορείτε να πείτε ότι 5 είναι ίσο με 2 συν 3. 1379 00:56:03,561 --> 00:56:05,060 Αλλά τι εάν είστε στην αρχή; 1380 00:56:05,060 --> 00:56:07,184 Τι και αν είστε ακριβώς χτύπημα Αυτές οι δύο πρώτες τιμές; 1381 00:56:07,184 --> 00:56:08,470 1382 00:56:08,470 --> 00:56:11,330 >> Για να πάρετε αυτό το 1, δεν μπορείτε λένε προσθέσετε τις δύο προηγούμενες, 1383 00:56:11,330 --> 00:56:13,930 επειδή αυτό το μηδέν and-- Δεν ξέρω. 1384 00:56:13,930 --> 00:56:15,390 Έτσι, σε κάποιο σημείο, θα πρέπει να σταματήσει. 1385 00:56:15,390 --> 00:56:21,250 Σε κάποιο σημείο, θα πρέπει να πούμε ότι αυτά δύο έχουν ακριβώς τους δικούς τους ορισμούς. 1386 00:56:21,250 --> 00:56:23,890 Ο αριθμός 0 Fibonacci είναι 0. 1387 00:56:23,890 --> 00:56:26,115 Και ο πρώτος αριθμός Fibonacci είναι 1. 1388 00:56:26,115 --> 00:56:34,120 >> Έτσι, ο τρόπος που θα μπορούσε να κωδικοποιήσει αυτό, Θα έλεγα αν το n είναι μικρότερο από δύο, 1389 00:56:34,120 --> 00:56:35,130 στη συνέχεια, μόλις επιστρέψει n. 1390 00:56:35,130 --> 00:56:36,494 Και αυτό θα είναι η βάση μου περίπτωση. 1391 00:56:36,494 --> 00:56:38,660 Αυτός είναι ο τρόπος που ξέρω για να σταματήσει με μια αναδρομική συνάρτηση. 1392 00:56:38,660 --> 00:56:40,640 1393 00:56:40,640 --> 00:56:41,410 Είναι σαφές; 1394 00:56:41,410 --> 00:56:41,940 Awesome. 1395 00:56:41,940 --> 00:56:43,260 Οτιδήποτε άλλο σε αναδρομή; 1396 00:56:43,260 --> 00:56:44,890 1397 00:56:44,890 --> 00:56:45,930 Όμορφη. 1398 00:56:45,930 --> 00:56:48,750 >> Ας γρήγορα να μιλήσουμε για αναζήτησης και ταξινόμησης τρέξει φορές. 1399 00:56:48,750 --> 00:56:52,660 Και τότε θα δώσω Davin κάποια ώρα να μιλήσουμε για την κωδικοποίηση παραδείγματα. 1400 00:56:52,660 --> 00:56:56,490 Έτσι, εδώ είναι η κύρια αναζήτηση και τα είδη που θα πρέπει να γνωρίζετε. 1401 00:56:56,490 --> 00:56:59,500 Guarantee-- Δεν μπορώ να εγγυηθώ, γιατί δεν έχω δει το quiz-- 1402 00:56:59,500 --> 00:57:01,940 αλλά αυτό έρχεται κουίζ μετά κουίζ μετά κλείστε το. 1403 00:57:01,940 --> 00:57:04,050 Έτσι χρησιμοποιήσει σίγουρα αυτό το διάγραμμα. 1404 00:57:04,050 --> 00:57:05,682 Όπως, πάρτε αυτό το διάγραμμα. 1405 00:57:05,682 --> 00:57:06,890 Βάλτε το επάνω φύλλο εξαπατήσει σας. 1406 00:57:06,890 --> 00:57:07,931 Θα είναι ένας ευτυχισμένος άνθρωπος. 1407 00:57:07,931 --> 00:57:09,010 1408 00:57:09,010 --> 00:57:12,590 >> Αυτό μας λέει τους χρόνους εκτέλεσης κάθε αυτών των είδος και την αναζήτηση αλγορίθμων. 1409 00:57:12,590 --> 00:57:14,020 1410 00:57:14,020 --> 00:57:18,850 Έτσι γραμμική αναζήτηση, μπορείτε να δείτε τρέξιμο χρόνο, και με την ίδια δυαδική αναζήτηση. 1411 00:57:18,850 --> 00:57:21,490 Πηγαίνετε πέρα ​​από ό, τι αλγορίθμων αυτών κάνει, η γενική ιδέα. 1412 00:57:21,490 --> 00:57:24,220 Κοιτάξτε μερικές ψευδοκώδικα, αν όχι το ίδιο Κώδικα. 1413 00:57:24,220 --> 00:57:25,610 1414 00:57:25,610 --> 00:57:30,380 >> Θα δείτε ότι η φούσκα είδος έχει ένα άνω δεσμεύεται στη χειρότερη περίπτωση n τετράγωνο. 1415 00:57:30,380 --> 00:57:31,490 1416 00:57:31,490 --> 00:57:34,680 Έτσι, αν σειρά μας ήταν εντελώς προς τα πίσω πριν θέλαμε να ταξινομήσετε, 1417 00:57:34,680 --> 00:57:37,090 θα λέγαμε ότι αυτό είναι πρόκειται να πάρει n τετράγωνο βήματα. 1418 00:57:37,090 --> 00:57:38,160 1419 00:57:38,160 --> 00:57:41,730 Αλλά στην καλύτερη περίπτωση, έτσι ώστε η κάτω φράγμα για την καλύτερη περίπτωση 1420 00:57:41,730 --> 00:57:44,300 πρόκειται να είναι, αν είναι ήδη τέλεια ταξινομημένο. 1421 00:57:44,300 --> 00:57:46,671 Στη συνέχεια, το μόνο που έχουμε να κάνουμε είναι βεβαιωθείτε ότι είναι ταξινομημένο. 1422 00:57:46,671 --> 00:57:47,921 Είναι ένα ερώτημα εδώ υπάρχουν; 1423 00:57:47,921 --> 00:57:49,805 >> Φοιτητής: Πότε θα θέλετε να χρησιμοποιήσετε το είδος; 1424 00:57:49,805 --> 00:57:50,747 Το είδος. 1425 00:57:50,747 --> 00:57:52,160 Είμαι απλά περίεργος. 1426 00:57:52,160 --> 00:57:53,510 >> ΧΑΝΑ: Πότε θα θέλετε να χρησιμοποιήσετε είδος επιλογής; 1427 00:57:53,510 --> 00:57:54,010 Αυτό και μόνο; 1428 00:57:54,010 --> 00:57:55,705 Το ένα που είναι n τετράγωνο και στις δύο περιπτώσεις; 1429 00:57:55,705 --> 00:57:56,860 >> Φοιτητής: [δεν ακούγεται]. 1430 00:57:56,860 --> 00:57:58,151 >> ΧΑΝΑ: Έτσι είναι πολύ διαφορετική. 1431 00:57:58,151 --> 00:58:00,760 Αν έχετε συγκεκριμένες απαιτήσεις για το πρόγραμμά σας, 1432 00:58:00,760 --> 00:58:04,887 όπως τα πράγματα όπως αν εμείς απλά είπε εφαρμόσει ένα search-- sorry-- 1433 00:58:04,887 --> 00:58:06,720 εφαρμόσει ένα είδος, θα μάλλον θα θέλετε να πάτε 1434 00:58:06,720 --> 00:58:09,950 για έναν από αυτούς που έχει μια καλύτερη περίπτωση του Ν, 1435 00:58:09,950 --> 00:58:12,410 ή ένα κατώτερο όριο στην καλύτερη περίπτωση του Ν. 1436 00:58:12,410 --> 00:58:14,790 Αλλά θα μπορούσε να υπάρχει ορισμένα πράγματα, όπως, ας πούμε, 1437 00:58:14,790 --> 00:58:16,767 swaps είναι πραγματικά ακριβό για κάποιο λόγο. 1438 00:58:16,767 --> 00:58:18,850 Στη συνέχεια, θα θέλατε να κάνετε bubble sort, γιατί σας 1439 00:58:18,850 --> 00:58:20,641 πρέπει να κάνουμε τόσα πολλά swaps, τα πράγματα όπως αυτό. 1440 00:58:20,641 --> 00:58:21,710 1441 00:58:21,710 --> 00:58:23,098 Κάθε other-- ναι; 1442 00:58:23,098 --> 00:58:25,488 >> Φοιτητής: Θα ήταν [δεν ακούγεται] να πω ότι [δεν ακούγεται]; 1443 00:58:25,488 --> 00:58:30,077 1444 00:58:30,077 --> 00:58:31,910 ΧΑΝΑ: Αυτό είναι ένα πράγμα που θα σας πω 1445 00:58:31,910 --> 00:58:33,670 αν ψάχνετε σε εφαρμογή. 1446 00:58:33,670 --> 00:58:35,850 Ο τρόπος που θα ήθελα πραγματικά σκεφτείτε γιατί είναι n 1447 00:58:35,850 --> 00:58:40,840 τετράγωνο είναι ότι πρέπει να τρέξει μέσα από σειρά μας του μήκους n, 1448 00:58:40,840 --> 00:58:42,765 κάθε φορά κάνοντας το πολύ, n swaps. 1449 00:58:42,765 --> 00:58:43,980 1450 00:58:43,980 --> 00:58:46,220 Και εμείς πρέπει να κάνουμε αυτή τη διαδικασία n φορές. 1451 00:58:46,220 --> 00:58:51,130 >> Έτσι, όταν έχετε να κάνετε με τα περισσότερα, n swaps και για ν διασχίζει τη συστοιχία, 1452 00:58:51,130 --> 00:58:52,380 εκεί πρόκειται να ν τετράγωνο. 1453 00:58:52,380 --> 00:58:55,480 Αλλά ναι, αυτό θα αποκαλυφθεί μέσα από αυτό το διπλό για βρόχο, 1454 00:58:55,480 --> 00:58:59,428 όπως το ζήτημα asked-- ή ένθετες για βρόχο, πρέπει να πω. 1455 00:58:59,428 --> 00:59:00,890 Εντάξει; 1456 00:59:00,890 --> 00:59:03,375 >> Και στη συνέχεια, να συγχωνεύσει το είδος, το οποίο Είναι ο ταχύτερος είδος τώρα, 1457 00:59:03,375 --> 00:59:07,560 ή ότι έχουμε καλύψει το CS50, γνωρίζουμε ότι το κύριο αλγόριθμος είναι 1458 00:59:07,560 --> 00:59:10,150 Αυτή η ιδέα του σπασίματος σε διαλεγμένα κομμάτια και στη συνέχεια, 1459 00:59:10,150 --> 00:59:11,980 συγχώνευση μαζί αυτά τα ταξινομημένα κομμάτια. 1460 00:59:11,980 --> 00:59:14,170 Και θα μας πάρει log n log n. 1461 00:59:14,170 --> 00:59:17,110 Οποιεσδήποτε ερωτήσεις σχετικά με τις αναζητήσεις και είδη πριν το δώσετε; 1462 00:59:17,110 --> 00:59:19,840 1463 00:59:19,840 --> 00:59:21,040 Ας δούμε. 1464 00:59:21,040 --> 00:59:21,800 >> Ω, συνδεδεμένες λίστες. 1465 00:59:21,800 --> 00:59:23,210 Συγγνώμη, έχω μία ακόμη θέμα. 1466 00:59:23,210 --> 00:59:25,000 Εντάξει, φοβερό, συνδεδεμένες λίστες. 1467 00:59:25,000 --> 00:59:27,900 Πρόβλημα με τις συστοιχίες, έχουν ένα σταθερό μέγεθος. 1468 00:59:27,900 --> 00:59:30,634 Έτσι, αν δεν ξέρετε πόσο μεγάλο εισόδου σας πρόκειται να είναι, 1469 00:59:30,634 --> 00:59:32,050 δεν θέλετε να δημιουργήσετε μια σειρά. 1470 00:59:32,050 --> 00:59:34,080 Διότι εάν δημιουργήσουμε ένα συστοιχία που είναι πάρα πολύ μικρή, 1471 00:59:34,080 --> 00:59:35,930 θα μπορούσε να τρέξει σε υπερχείλιση. 1472 00:59:35,930 --> 00:59:38,890 >> Έτσι, αντ 'αυτού, θα μπορούσαμε να κάνουμε κάτι με συνδεδεμένες λίστες, οι οποίες 1473 00:59:38,890 --> 00:59:44,280 μας επιτρέπει να έχουμε μια δυναμικά μεγέθους δομή δεδομένων 1474 00:59:44,280 --> 00:59:48,970 που θα μας επιτρέψει να αποθηκεύσετε ένα πιο ευέλικτη ποσότητα των δεδομένων. 1475 00:59:48,970 --> 00:59:54,030 Έτσι, σε κάθε κόμβο σε μας συνδεδεμένη λίστα, έχουμε δύο κομμάτια. 1476 00:59:54,030 --> 00:59:56,820 Έχουμε την πραγματική αξία που αποθηκεύει. 1477 00:59:56,820 --> 00:59:59,530 Έτσι, αυτό είναι το μόνο πράγμα που θα κάνατε βλέπε στον πίνακα, για παράδειγμα. 1478 00:59:59,530 --> 01:00:04,600 Και στη συνέχεια, κρατάμε επίσης παρακολουθείτε ένα δείκτη στο επόμενο πράγμα στη μνήμη. 1479 01:00:04,600 --> 01:00:06,430 >> Σε αντίθεση με συστοιχίες, η οποία γνωρίζουμε όλοι πρόκειται 1480 01:00:06,430 --> 01:00:10,890 να be-- στοιχεία πίνακα είναι όλα ένα μετά την άλλη σε memory-- συνδέονται 1481 01:00:10,890 --> 01:00:13,300 κατάλογοι θα μπορούσε να είναι οπουδήποτε στη μνήμη. 1482 01:00:13,300 --> 01:00:14,590 Είναι αυθαίρετες τοποθεσίες. 1483 01:00:14,590 --> 01:00:16,410 Έτσι, αν ήμασταν σε πραγματικά να πάμε να τους βρείτε, εμείς 1484 01:00:16,410 --> 01:00:19,770 Πρέπει να παρακολουθείτε το επόμενο πράγμα στη λίστα μας. 1485 01:00:19,770 --> 01:00:22,840 >> Και στη συνέχεια, προκειμένου να γνωρίζουμε όπου ο κατάλογος αυτός στο σύνολό της είναι, 1486 01:00:22,840 --> 01:00:26,276 το μόνο που έχουμε να παρακολουθείτε είναι η πρώτο στοιχείο στη συνδεδεμένη λίστα μας. 1487 01:00:26,276 --> 01:00:27,900 Και αυτό θα μας επιτρέψει να ακολουθήσει κατευθείαν. 1488 01:00:27,900 --> 01:00:31,020 1489 01:00:31,020 --> 01:00:33,070 >> Έτσι, αυτό είναι το πώς μπορείτε να ορίσετε μια λειτουργία. 1490 01:00:33,070 --> 01:00:36,160 Αυτό είναι μια μεγάλη ευκαιρία να επωφεληθούν από structs. 1491 01:00:36,160 --> 01:00:39,660 Επειδή έχετε αυτήν την ιδέα, αλλά, για ένα δεδομένο κόμβο, έχω δύο κομμάτια. 1492 01:00:39,660 --> 01:00:41,770 Έχω την ίδια την πραγματική αξία. 1493 01:00:41,770 --> 01:00:45,610 Και τότε έχω ένα δείκτη για το επόμενο στοιχείο στην συνδεδεμένη λίστα. 1494 01:00:45,610 --> 01:00:49,150 Έτσι βλέπετε, έχουμε έναν ακέραιο n, η οποία πρόκειται να είναι η πραγματική τιμή, 1495 01:00:49,150 --> 01:00:53,150 και στη συνέχεια ένα δείκτη σε ένας κόμβος, που ονομάζεται το επόμενο. 1496 01:00:53,150 --> 01:00:56,431 Έτσι, αυτό πρόκειται να είναι το επόμενο στοιχείο στη συνδεδεμένη λίστα μας. 1497 01:00:56,431 --> 01:00:56,972 Φοιτητής: Ναι; 1498 01:00:56,972 --> 01:01:01,920 Έχετε να διευκρινιστεί ότι το αστέρι είναι σαν ένα struct; 1499 01:01:01,920 --> 01:01:05,620 >> ΧΑΝΑ: Ναι, έτσι αφού αυτή Είναι σχεδόν σαν ένα είδος, 1500 01:01:05,620 --> 01:01:07,980 φαίνεται σαν μια αναδρομική ορισμός σε αυτό το έχουμε 1501 01:01:07,980 --> 01:01:12,080 Πρέπει να ξέρετε τι ένας κόμβος είναι μέσα για την εύρεση ενός κόμβου. 1502 01:01:12,080 --> 01:01:14,450 Επειδή αυτό δεν συμβαίνει στην πραγματικότητα ξέρετε τι ένας κόμβος είναι εντελώς 1503 01:01:14,450 --> 01:01:17,283 μέχρι να φτάσουμε στο τέλος του this-- και μετά από αυτό μπορούμε να το ονομάσουμε μόνο 1504 01:01:17,283 --> 01:01:21,935 ένα node-- εσωτερικό αυτού του ορισμού, θα πρέπει να το ονομάσουμε ένα κόμβο struct. 1505 01:01:21,935 --> 01:01:22,560 Μεγάλη ερώτηση. 1506 01:01:22,560 --> 01:01:23,580 1507 01:01:23,580 --> 01:01:25,214 Οτιδήποτε άλλο; 1508 01:01:25,214 --> 01:01:26,198 Ναι; 1509 01:01:26,198 --> 01:01:29,150 >> Φοιτητής: Γιατί εμείς Πρέπει να πω κόμβο δύο φορές; 1510 01:01:29,150 --> 01:01:33,578 Διότι όταν ήμασταν στην [δεν ακούγεται] εμείς απλά έπρεπε να το κάνει στο ερωτηματικό, 1511 01:01:33,578 --> 01:01:37,352 αλλά τώρα πρέπει να βρούμε ότι κόμβο struct; [Δεν ακούγεται]. 1512 01:01:37,352 --> 01:01:39,060 ΧΑΝΑ: Έτσι πιστεύω στο τελευταίο παράδειγμα, 1513 01:01:39,060 --> 01:01:42,110 ήμασταν απλά δημιουργώντας οποτεδήποτε ήθελε να χρησιμοποιήσει ένας φοιτητής μετά από αυτό, μπορείτε 1514 01:01:42,110 --> 01:01:46,430 έπρεπε να χρησιμοποιήσει struct node-- Είμαι sorry-- μαθητή struct. 1515 01:01:46,430 --> 01:01:51,575 Αυτό μας επέτρεψε να, μετά το γεγονός, μόλις χρήση κόμβο προσθέσετε ένα νέο είδος, κατ 'ουσίαν. 1516 01:01:51,575 --> 01:01:53,324 1517 01:01:53,324 --> 01:01:53,990 Νόημα αυτό; 1518 01:01:53,990 --> 01:01:54,984 1519 01:01:54,984 --> 01:01:57,150 Γι 'αυτό και θα πρέπει να πάμε πίσω και εξετάσουμε το κωδικό πριν. 1520 01:01:57,150 --> 01:01:59,025 Αλλά θα ήθελα να μαντέψει ότι εμείς δεν χρησιμοποιούν typedef. 1521 01:01:59,025 --> 01:02:02,050 Και ζητήσαμε από την ερώτηση, γιατί χρειαζόμαστε να χρησιμοποιήσετε typedef; 1522 01:02:02,050 --> 01:02:05,540 Typedef μας επιτρέπει να αποφευχθεί η λέξη struct στην αρχή. 1523 01:02:05,540 --> 01:02:06,221 Ναι; 1524 01:02:06,221 --> 01:02:08,095 Φοιτητής: Τι είδους ερωτήσεις θα καταλήξει 1525 01:02:08,095 --> 01:02:10,400 όσον αφορά την άποψη της κόμβους και συνδεδεμένες λίστες; 1526 01:02:10,400 --> 01:02:15,110 >> ΧΑΝΑ: Έτσι, ένα πράγμα είναι θα μπορούσαμε να πούμε πως θα μπορούσε να αναζητήσετε μέσα από μια συνδεδεμένη λίστα; 1527 01:02:15,110 --> 01:02:16,930 Εντάξει, επειδή είναι μια λίγο πιο περίπλοκη 1528 01:02:16,930 --> 01:02:18,520 από ό, τι αν είμαστε αναζήτηση μέσω μιας συστοιχίας. 1529 01:02:18,520 --> 01:02:21,472 Μπορούμε απλά να δούμε στοιχείο μηδέν, ένα στοιχείο, το στοιχείο δύο, μπλα, μπλα, 1530 01:02:21,472 --> 01:02:21,972 μπλα. 1531 01:02:21,972 --> 01:02:22,629 1532 01:02:22,629 --> 01:02:24,420 Αν θέλετε να αναζητήσετε μέσω μιας συνδεδεμένη λίστα, 1533 01:02:24,420 --> 01:02:27,229 εμείς θα πρέπει ουσιαστικά να ακολουθήσουν αυτό το μικρό λαβύρινθο των δεικτών. 1534 01:02:27,229 --> 01:02:29,270 Οπότε ας πάμε στην πραγματικότητα μέσα από αυτό πολύ γρήγορα. 1535 01:02:29,270 --> 01:02:30,460 1536 01:02:30,460 --> 01:02:32,860 Τι θα μπορούσαμε να κάνουμε σε παραγγείλετε to-- ας πούμε εμείς 1537 01:02:32,860 --> 01:02:35,430 θέλουν απλά να επαναλάβει μέσω εξ ολοκλήρου συνδεδεμένη λίστα μας. 1538 01:02:35,430 --> 01:02:37,450 Θα ξεκινήσουμε από το κεφάλι. 1539 01:02:37,450 --> 01:02:39,890 Και στη συνέχεια, ώστε να να προχωρήσουμε στο επόμενο στοιχείο, 1540 01:02:39,890 --> 01:02:43,680 αντί μόνο προσαύξηση κατά ένα όπως θα μπορούσαμε να το περάσει από μια σειρά, 1541 01:02:43,680 --> 01:02:45,720 είμαστε πραγματικά πρόκειται να ακολουθήστε το επόμενο δείκτη, 1542 01:02:45,720 --> 01:02:48,360 έτσι μπορούμε να βρούμε, όπου το μνήμη το επόμενο στοιχείο είναι. 1543 01:02:48,360 --> 01:02:49,357 1544 01:02:49,357 --> 01:02:51,690 Έτσι ξέρω ότι αυτό δεν είναι αρκετό για να να λάβει όλα αυτά τώρα, 1545 01:02:51,690 --> 01:02:52,650 αλλά θα έχετε αυτές τις διαφάνειες. 1546 01:02:52,650 --> 01:02:54,730 Έτσι, μπορείτε να πάτε μέσω Αυτό λίγο πιο αργά. 1547 01:02:54,730 --> 01:02:56,890 Αλλά ουσιαστικά, αυτό που θέλουμε να κάνετε είναι να ακολουθήσετε αυτούς τους δείκτες 1548 01:02:56,890 --> 01:02:58,550 μέσω το σύνολο της συνδεδεμένης λίστας. 1549 01:02:58,550 --> 01:03:00,258 Έτσι, αυτό είναι ένα ερώτημα μπορεί να σας ζητηθεί. 1550 01:03:00,258 --> 01:03:01,920 1551 01:03:01,920 --> 01:03:03,980 >> Κάτι για να παρατηρήσετε με εισαγωγή, ας πούμε 1552 01:03:03,980 --> 01:03:07,925 θέλαμε να θέσει ένα νέο στοιχείο στο μπροστινό μέρος της συνδεδεμένης λίστας μας. 1553 01:03:07,925 --> 01:03:10,800 Πρέπει να είμαστε πολύ προσεκτικοί για τη σειρά με την οποία θα 1554 01:03:10,800 --> 01:03:12,760 εκ νέου τους δείκτες. 1555 01:03:12,760 --> 01:03:15,230 Διότι ας πούμε μόλις είπα ΟΚ. 1556 01:03:15,230 --> 01:03:18,930 Κάντε το σημείο το κεφάλι σε αυτό το νέο στοιχείο. 1557 01:03:18,930 --> 01:03:23,550 Απλά να το σημείο με 1 Στη συνέχεια, έχουμε ουσιαστικά χάσει το υπόλοιπο του καταλόγου μας, 1558 01:03:23,550 --> 01:03:25,860 γιατί δεν θυμάμαι όπου 2 ζωές. 1559 01:03:25,860 --> 01:03:27,730 >> Έτσι, έχουμε να κάνουμε με ένα πολύ συγκεκριμένη σειρά. 1560 01:03:27,730 --> 01:03:31,500 Πρώτον, έχουμε κάνει το νέο σημείο στοιχείο στο κεφάλι. 1561 01:03:31,500 --> 01:03:33,970 Και τότε θα κάνει το κεφάλι σημείο στο νέο στοιχείο. 1562 01:03:33,970 --> 01:03:38,455 Ας δούμε λοιπόν τι μοιάζει με arrows-- έτσι απλά. 1563 01:03:38,455 --> 01:03:42,080 Έτσι, θα πρέπει πρώτα να έχουν τη νέα σημείο στοιχείο στην παλιά κεφάλι. 1564 01:03:42,080 --> 01:03:45,990 Και τώρα, έχουμε το κεφάλι σημείο στο νέο πρώτο στοιχείο. 1565 01:03:45,990 --> 01:03:47,187 Οποιεσδήποτε ερωτήσεις με αυτό; 1566 01:03:47,187 --> 01:03:49,870 1567 01:03:49,870 --> 01:03:54,350 >> Εντάξει εδώ είναι μερικά κωδικό για δεύτερη φορά, κάτι για να δούμε λίγο αργότερα. 1568 01:03:54,350 --> 01:03:58,630 Και τώρα θα το κάνω πάνω σε Davin για GDB και μια λίγη πρακτική 1569 01:03:58,630 --> 01:03:59,480 κωδικοποίησης σε χαρτί. 1570 01:03:59,480 --> 01:04:00,597 1571 01:04:00,597 --> 01:04:01,096 Όμορφη. 1572 01:04:01,096 --> 01:04:01,810 >> ROB: Και ο Rob. 1573 01:04:01,810 --> 01:04:02,360 >> ΧΑΝΑ: Ω, Davin και Rob. 1574 01:04:02,360 --> 01:04:03,055 Λυπάμαι. 1575 01:04:03,055 --> 01:04:03,596 >> ΜΑΘΗΤΗ: Woo! 1576 01:04:03,596 --> 01:04:08,140 1577 01:04:08,140 --> 01:04:09,110 >> ROB: Ευχαριστώ. 1578 01:04:09,110 --> 01:04:11,209 >> Davin: Θέλετε να πείτε ό, τι πραγματικά γρήγορα; 1579 01:04:11,209 --> 01:04:11,875 ROB: Ναι, ναι. 1580 01:04:11,875 --> 01:04:12,845 Davin: Όταν είμαι επάνω. 1581 01:04:12,845 --> 01:04:16,240 1582 01:04:16,240 --> 01:04:19,520 ΟΚ, ενώ ο Rob βάζει το μικρόφωνο, οπότε τι είναι GDB; 1583 01:04:19,520 --> 01:04:23,945 Ο καθένας πρέπει να δει GDB σε τάξη και, επίσης, σε ώρες γραφείου. 1584 01:04:23,945 --> 01:04:25,070 Και θα πρέπει να το χρησιμοποιεί. 1585 01:04:25,070 --> 01:04:25,750 Έτσι τι είναι GDB; 1586 01:04:25,750 --> 01:04:28,030 1587 01:04:28,030 --> 01:04:28,850 Ο καθένας; 1588 01:04:28,850 --> 01:04:29,540 >> ΦΟΙΤΗΤΗΣ: Είναι ένα πρόγραμμα εντοπισμού σφαλμάτων. 1589 01:04:29,540 --> 01:04:30,250 >> Davin: Είναι ένα πρόγραμμα εντοπισμού σφαλμάτων. 1590 01:04:30,250 --> 01:04:31,624 Και τι δεν θα σας επιτρέψει να κάνετε; 1591 01:04:31,624 --> 01:04:33,064 Όπως, γιατί μας αρέσει GDB; 1592 01:04:33,064 --> 01:04:34,480 ΜΑΘΗΤΗ: Να επιβραδύνει το πρόγραμμα. 1593 01:04:34,480 --> 01:04:36,740 Davin: Δεξιά, ώστε να μπορείτε να περπατήσετε μέσα από αυτό σαν ένα ανθρώπινο ρυθμό. 1594 01:04:36,740 --> 01:04:38,490 Και ναι, ποιες είναι μερικές εντολές που μπορείτε να κάνετε; 1595 01:04:38,490 --> 01:04:40,407 Λοιπόν, διάλειμμα είναι μάλλον το αγαπημένο σας εντολή. 1596 01:04:40,407 --> 01:04:43,240 Διότι αυτό σας επιτρέπει να σπάσει το πρόγραμμα και στην πραγματικότητα με τα πόδια μέσα από αυτό 1597 01:04:43,240 --> 01:04:44,280 γραμμή προς γραμμή. 1598 01:04:44,280 --> 01:04:46,500 >> Εκτέλεση σας επιτρέπει να εκτελέσετε. 1599 01:04:46,500 --> 01:04:48,210 Στη συνέχεια, σαν να περπατήσει μέσα. 1600 01:04:48,210 --> 01:04:49,820 Ποιο είναι το επόμενο και μεταξύ βήμα; 1601 01:04:49,820 --> 01:04:52,190 1602 01:04:52,190 --> 01:04:53,190 Περιμένετε, λένε ότι φωναχτά. 1603 01:04:53,190 --> 01:04:54,060 Ήταν σωστή. 1604 01:04:54,060 --> 01:04:55,280 >> Φοιτητής: [δεν ακούγεται]. 1605 01:04:55,280 --> 01:04:56,190 >> Davin: Ναι, φοβερό. 1606 01:04:56,190 --> 01:04:59,210 Έτσι, όπως, το επόμενο βήμα και, αν you're-- Ας πούμε ότι έχετε μια λειτουργία που 1607 01:04:59,210 --> 01:04:59,950 ορίζουν. 1608 01:04:59,950 --> 01:05:03,350 Ας πούμε ότι κάποιοι στην κύρια λειτουργία σας, και είστε ακριβώς το χτύπημα δίπλα, δίπλα, 1609 01:05:03,350 --> 01:05:03,850 επόμενο. 1610 01:05:03,850 --> 01:05:05,910 Είσαι πραγματικά πρόκειται να εκτελέσει αυτή τη λειτουργία, 1611 01:05:05,910 --> 01:05:07,285 αλλά θα πάμε να πηδήξει πάνω από αυτό. 1612 01:05:07,285 --> 01:05:09,711 Αν χτυπήσει το βήμα, ή s ή οτιδήποτε άλλο, είστε 1613 01:05:09,711 --> 01:05:11,460 πρόκειται να πηδήσει στην πραγματικότητα σε αυτή τη λειτουργία, 1614 01:05:11,460 --> 01:05:14,110 και, στη συνέχεια, μπορείτε να χτυπήσει την επόμενη για να δείτε τις διαφορετικές κλήσεις 1615 01:05:14,110 --> 01:05:16,170 μέσα σε αυτή τη λειτουργία. 1616 01:05:16,170 --> 01:05:16,670 Ναι; 1617 01:05:16,670 --> 01:05:18,670 >> Φοιτητής: Υπάρχει κάποιος τρόπος να πηδούν, όπως, κάνει πίσω; 1618 01:05:18,670 --> 01:05:20,750 Davin: Τέλος, ναι, τελειώσει μαζί σας πηδήξει έξω. 1619 01:05:20,750 --> 01:05:22,570 Έτσι πρόκειται να τελειώσει ότι λειτουργία, και στη συνέχεια να είστε 1620 01:05:22,570 --> 01:05:24,153 πρόκειται να είναι πίσω στην κύρια, για παράδειγμα. 1621 01:05:24,153 --> 01:05:25,250 1622 01:05:25,250 --> 01:05:27,370 Εκτύπωση θα εκτυπωθεί ένα χρόνο. 1623 01:05:27,370 --> 01:05:29,381 Κάτι που μπορώ να χρησιμοποιήσω πάντα είναι οθόνη. 1624 01:05:29,381 --> 01:05:31,880 Οθόνη θα εκτυπώσετε συνεχώς σε όλη τη διάρκεια 1625 01:05:31,880 --> 01:05:32,470 του προγράμματός σας. 1626 01:05:32,470 --> 01:05:33,810 >> Για παράδειγμα, αν είστε σε ένα βρόχο for, και σας 1627 01:05:33,810 --> 01:05:37,018 θέλουν να δουν πώς κάτι αλλάζει, και δεν θέλετε να, όπως, συνεχώς 1628 01:05:37,018 --> 01:05:38,940 να κάνει, όπως εκτύπωση, εκτύπωσης, εκτύπωση, οθόνη 1629 01:05:38,940 --> 01:05:43,230 θα εμφανίσει ότι η μεταβλητή συνεχώς, κάθε φορά που θα χτυπήσει την επόμενη. 1630 01:05:43,230 --> 01:05:44,310 Και να συνεχίσει. 1631 01:05:44,310 --> 01:05:45,905 Έτσι GBD, αυτό είναι το GDB. 1632 01:05:45,905 --> 01:05:47,160 1633 01:05:47,160 --> 01:05:49,180 >> Φοιτητής: Ποια είναι η μία όπου μπορείτε [δεν ακούγεται]; 1634 01:05:49,180 --> 01:05:50,150 1635 01:05:50,150 --> 01:05:50,900 Davin: Τι είναι αυτό; 1636 01:05:50,900 --> 01:05:52,310 1637 01:05:52,310 --> 01:05:54,390 >> Φοιτητής: Τι είναι the-- οι τοπικές μεταβλητές. 1638 01:05:54,390 --> 01:05:55,364 1639 01:05:55,364 --> 01:05:57,780 ROB: Υπάρχει κάτι στην πραγματικότητα σαν ντόπιοι ή κάτι τέτοιο. 1640 01:05:57,780 --> 01:05:58,140 Έχω can't-- 1641 01:05:58,140 --> 01:05:59,930 >> Davin: Θα μπορούσε να είναι κάτι τέτοιο, ναι. 1642 01:05:59,930 --> 01:06:00,830 >> ΧΑΝΑ: Στα ντόπιους; 1643 01:06:00,830 --> 01:06:01,510 >> Davin: Αυτό είναι. 1644 01:06:01,510 --> 01:06:02,134 Αυτό είναι το ένα. 1645 01:06:02,134 --> 01:06:03,040 ROB: Όμορφη. 1646 01:06:03,040 --> 01:06:04,030 >> Davin: Ναι. 1647 01:06:04,030 --> 01:06:06,010 >> Φοιτητής: Τι συνεχίσει να κάνει; 1648 01:06:06,010 --> 01:06:08,010 >> Davin: Είναι continues-- έτσι είναι ακριβώς πρόκειται να συνεχίσει τα προγράμματά σας. 1649 01:06:08,010 --> 01:06:09,843 Έτσι, αν σπάσει και να χτυπήσει συνεχίζουν, πρόκειται 1650 01:06:09,843 --> 01:06:13,119 να τρέξει μόνο το πρόγραμμα αυτό μέχρι χτυπά και πάλι ότι διάλειμμα. 1651 01:06:13,119 --> 01:06:14,910 Έτσι, για παράδειγμα, εάν έσπασε σε λειτουργία, 1652 01:06:14,910 --> 01:06:16,720 και θα πάμε να κάνουμε, όπως για βρόχου ή κάτι τέτοιο, 1653 01:06:16,720 --> 01:06:19,869 και χτυπάτε συνεχίσετε, πρόκειται να να συνεχίσει και να πάει πίσω σε εκείνη διάλειμμα. 1654 01:06:19,869 --> 01:06:22,660 Ή δεν υπάρχει διάλειμμα, πρόκειται να να συνεχίσει και να τελειώσει το πρόγραμμα. 1655 01:06:22,660 --> 01:06:25,000 >> ROB: ήθελα λοιπόν απλά τρέξτε στάσεις από την πρώτη κιόλας breakpoint 1656 01:06:25,000 --> 01:06:27,010 χτυπάτε, αν στη συνέχεια πατήστε συνέχεια, αυτό θα κρατήσει 1657 01:06:27,010 --> 01:06:28,070 πηγαίνει μέχρι να είναι το επόμενο σημείο διακοπής. 1658 01:06:28,070 --> 01:06:30,111 Και στη συνέχεια να συνεχίσει να πάει στο επόμενο breakpoint. 1659 01:06:30,111 --> 01:06:31,264 1660 01:06:31,264 --> 01:06:32,680 Davin: Οποιεσδήποτε άλλες ερωτήσεις σχετικά με το GDB; 1661 01:06:32,680 --> 01:06:33,577 1662 01:06:33,577 --> 01:06:35,410 Πιστεύω λοιπόν ότι στο παρελθόν, θα έχετε ρώτησε τι 1663 01:06:35,410 --> 01:06:37,690 GDB είναι και να δώσει μια παράδειγμα κάποια πράγματα που 1664 01:06:37,690 --> 01:06:40,770 μπορεί να κάνει με GDB, έτσι Real Simple, αλλά ναι. 1665 01:06:40,770 --> 01:06:42,280 Εκεί θα πάτε. 1666 01:06:42,280 --> 01:06:43,250 Και κόμβους; 1667 01:06:43,250 --> 01:06:49,571 >> ROB: Ναι, έτσι ποια κατεύθυνση θα ήταν; 1668 01:06:49,571 --> 01:06:50,851 1669 01:06:50,851 --> 01:06:51,726 Φοιτητής: Αυτό ήταν. 1670 01:06:51,726 --> 01:06:52,160 Davin: Περιμένετε. 1671 01:06:52,160 --> 01:06:52,270 ROB: Αυτός ο τύπος; 1672 01:06:52,270 --> 01:06:52,936 Davin: Εκείνο το ένα. 1673 01:06:52,936 --> 01:06:54,660 ROB: Αυτός ο τύπος, αχ, δεν είχα συνειδητοποιήσει. 1674 01:06:54,660 --> 01:06:56,940 Γι 'αυτό και δεν ήταν σαφές σε ό, τι the-- εγώ δεν κάνω 1675 01:06:56,940 --> 01:06:58,680 ξέρω ποιος was-- αλλά το ερώτημα. 1676 01:06:58,680 --> 01:07:01,180 Δεν ξέρουμε τι ακριβώς σας ρωτούσαν γι 'αυτό, έτσι απλά 1677 01:07:01,180 --> 01:07:04,800 για να ξεκαθαρίσω κάτι. 1678 01:07:04,800 --> 01:07:07,750 Έτσι, η πρώτη, όπως είπα και πριν, typedef είστε πάντα χρησιμοποιώντας μόνο 1679 01:07:07,750 --> 01:07:09,305 δημιουργήσετε ένα ψευδώνυμο για έναν τύπο. 1680 01:07:09,305 --> 01:07:13,420 Έτσι ακριβώς εδώ, το ψευδώνυμο είμαστε δημιουργία είναι για αυτόν τον τύπο struct κόμβο. 1681 01:07:13,420 --> 01:07:18,070 >> Έτσι, η πρώτη, αγνοώντας αυτό το κόμβο στο typedef, έτσι ώστε αυτό το struct node σγουρά 1682 01:07:18,070 --> 01:07:21,060 συγκρατήσει τα κάτω στο επόμενο σγουρά τιράντες είναι ο τύπος struct node. 1683 01:07:21,060 --> 01:07:23,470 Και χρειαζόμαστε σε αυτόν τον κόμβο μέχρι εκεί, γιατί εμείς 1684 01:07:23,470 --> 01:07:25,190 Πρέπει να αναφοράς κόμβο εδώ. 1685 01:07:25,190 --> 01:07:29,380 Έτσι, με αυτό το είδος των αναδρομικών struct, θα πρέπει να δώσει αυτό το struct ένα όνομα, 1686 01:07:29,380 --> 01:07:31,340 ή αλλιώς δεν θα μπορούσε να λένε struct node εδώ. 1687 01:07:31,340 --> 01:07:33,340 Ενώ πριν με το μαθητή όταν ήμασταν δακτυλογραφημένες, νομίζω, 1688 01:07:33,340 --> 01:07:35,423 εμείς δεν έχουμε να πούμε φοιτητής εκεί, γιατί εμείς 1689 01:07:35,423 --> 01:07:40,370 δεν έχουν να πουν struct φοιτητής μέσα στο ίδιο το struct. 1690 01:07:40,370 --> 01:07:43,730 Έτσι είναι η αναδρομική ότι μας αναγκάζει να πούμε κόμβο εκεί. 1691 01:07:43,730 --> 01:07:46,610 >> Αυτός ο κόμβος είναι απλά το όνομα είμαστε δίνοντας κόμβος για την typedef. 1692 01:07:46,610 --> 01:07:48,520 Έτσι, αυτός ο κόμβος δεν είναι το ίδιο με αυτόν τον κόμβο. 1693 01:07:48,520 --> 01:07:51,567 Αλλά αυτό struct node είναι η ίδιο με αυτόν τον κόμβο struct. 1694 01:07:51,567 --> 01:07:54,150 Davin: Έτσι, κάθε φορά που σας καλούν, όπως, κόμβος στην κύρια λειτουργία σας, 1695 01:07:54,150 --> 01:07:55,350 δεν πρόκειται να Πρέπει να πω struct node. 1696 01:07:55,350 --> 01:07:58,360 Μπορείτε απλά να πω κόμβο, επειδή κόμβος είναι ένας different-- είναι βασικά 1697 01:07:58,360 --> 01:07:59,440 λες, εντάξει. 1698 01:07:59,440 --> 01:08:01,490 Αντί να χρειάζεται να καλέσετε struct node στον κώδικά μου, 1699 01:08:01,490 --> 01:08:04,050 Απλά θέλω να το μετονομάσετε ως κόμβος για να καταστεί ευκολότερη. 1700 01:08:04,050 --> 01:08:06,800 >> ROB: Αν πάντα χρησιμοποιήσετε typedef, τότε αυτό 1701 01:08:06,800 --> 01:08:11,240 Είναι το μόνο μέρος που θα πάμε για να έχουν για να δηλώσει μια μεταβλητή με struct node 1702 01:08:11,240 --> 01:08:11,740 Star, ναι. 1703 01:08:11,740 --> 01:08:14,650 1704 01:08:14,650 --> 01:08:20,801 >> Davin: Εντάξει, έτσι το τελευταίο μέρος είναι δύσκολο να διδάξει because-- 1705 01:08:20,801 --> 01:08:22,185 1706 01:08:22,185 --> 01:08:22,685 ROB: Τι; 1707 01:08:22,685 --> 01:08:24,098 1708 01:08:24,098 --> 01:08:25,649 >> Davin: Επειδή είναι κωδικοποίησης σε χαρτί. 1709 01:08:25,649 --> 01:08:28,689 Έτσι, κάθε χρόνο έχουμε κώδικα σε ερωτήσεις χαρτί. 1710 01:08:28,689 --> 01:08:32,510 Πιστεύω λοιπόν ότι το περασμένο έτος, 12 από 80 πόντους ήταν κώδικα σε χαρτί. 1711 01:08:32,510 --> 01:08:36,720 Έτος πριν από αυτό, 10 από τα 80, χρόνο πριν, 20 από τις 100, 1712 01:08:36,720 --> 01:08:37,939 έτσι αρκετά από αυτά. 1713 01:08:37,939 --> 01:08:40,970 Έτσι, εσείς πρόκειται να πρέπει να είναι σε θέση να κωδικοποιήσει αυτές τις λειτουργίες με το χέρι. 1714 01:08:40,970 --> 01:08:45,340 >> Έτσι σκέφτηκα θα μπορούσε να περάσει μέσα από ένα μερικά από αυτά και να δούμε πώς κάνουν οι άνθρωποι, 1715 01:08:45,340 --> 01:08:47,340 το είδος της περπατήσετε μέσα τους αργούς ρυθμούς με τους ανθρώπους. 1716 01:08:47,340 --> 01:08:48,790 1717 01:08:48,790 --> 01:08:52,420 Έτσι, γενικά, strlen και Atoi έχουν γίνει πολύ δημοφιλή. 1718 01:08:52,420 --> 01:08:55,670 Πέρυσι, νομίζω ότι είχαμε GetPositiveInt και RandomInt. 1719 01:08:55,670 --> 01:08:58,591 Αλλά Pow, έτσι δύναμη, επίσης, μια θετική πάρα πολύ. 1720 01:08:58,591 --> 01:09:00,965 Ας φύγουμε από ίσως ένα ή δύο από αυτά μαζί. 1721 01:09:00,965 --> 01:09:02,510 1722 01:09:02,510 --> 01:09:03,729 Τι κάνουν οι άνθρωποι θέλουν να δουν; 1723 01:09:03,729 --> 01:09:05,037 1724 01:09:05,037 --> 01:09:05,767 >> ΜΑΘΗΤΗ: Atoi. 1725 01:09:05,767 --> 01:09:06,350 Φοιτητής: Ναι. 1726 01:09:06,350 --> 01:09:06,859 Davin: Atoi; 1727 01:09:06,859 --> 01:09:07,800 Φοιτητής: [δεν ακούγεται]. 1728 01:09:07,800 --> 01:09:09,682 Davin: Εντάξει, Πάω να το κάνει στο διοικητικό συμβούλιο. 1729 01:09:09,682 --> 01:09:11,765 Έχετε μια προτίμηση αν το κάνω εδώ ή εκεί; 1730 01:09:11,765 --> 01:09:13,580 1731 01:09:13,580 --> 01:09:14,550 Εκεί, Gabe λέει εκεί. 1732 01:09:14,550 --> 01:09:16,729 1733 01:09:16,729 --> 01:09:19,580 >> ROB: Και αυτό είναι γενικές σκέψεις για αυτά τα ζητήματα κωδικοποίησης. 1734 01:09:19,580 --> 01:09:21,705 Προσπαθήστε να γράψω κάτι. 1735 01:09:21,705 --> 01:09:22,580 Μην το αφήσετε κενό. 1736 01:09:22,580 --> 01:09:23,080 >> Davin: Ναι. 1737 01:09:23,080 --> 01:09:25,520 ROB: Εάν μπορείτε να πάρετε το επιστρέψει τύπου σωστό, 1738 01:09:25,520 --> 01:09:27,090 ή ίσως θα μπορούσαμε να το δώσει σε σας, αλλά αν μπορείτε, όπως, 1739 01:09:27,090 --> 01:09:30,256 γράψετε τη γενική υπογραφή λειτουργίας, Εάν μπορείτε να πάρετε οι υποθέσεις βάσης σωστή, 1740 01:09:30,256 --> 01:09:32,244 ή περιπτώσεις γωνία, ή θυμόμαστε έλεγχος για μηδενική, 1741 01:09:32,244 --> 01:09:34,160 εφ 'όσον έχετε κάποια τα πράγματα, τότε ίσως εμείς 1742 01:09:34,160 --> 01:09:35,880 μπορεί να σας δώσει ένα ζευγάρι επισημαίνει για το πρόβλημα. 1743 01:09:35,880 --> 01:09:36,810 Μην το αφήσετε κενό. 1744 01:09:36,810 --> 01:09:38,560 >> Davin: Ναι, και αν είναι μόνο εντελώς 1745 01:09:38,560 --> 01:09:40,580 μείνει άναυδοι με το πώς να πραγματικά να μετατραπεί σε κώδικα. 1746 01:09:40,580 --> 01:09:43,140 Αν γράψετε ψευδοκώδικα, ότι είναι πάρα πολύ καλή. 1747 01:09:43,140 --> 01:09:46,390 Έτσι είναι σαν, αυτό είναι μια ερώτηση έξι σημείων, και να γράψετε τη σωστή ψευδοκώδικα, 1748 01:09:46,390 --> 01:09:47,858 θα πάρει τουλάχιστον δύο σημεία. 1749 01:09:47,858 --> 01:09:49,149 Έτσι, δεν απλά να τους αφήνουν κενό. 1750 01:09:49,149 --> 01:09:50,279 Προσπαθήστε να βάλετε κάτι. 1751 01:09:50,279 --> 01:09:51,770 >> ROB: Θα πρέπει να είναι η σωστή ψευδοκώδικας, όμως. 1752 01:09:51,770 --> 01:09:52,270 >> Davin: Ναι. 1753 01:09:52,270 --> 01:09:55,381 ROB: Έτσι είμαστε γενικά είναι λιγότερο επιεικείς με τα σφάλματα σε ψευδοκώδικα. 1754 01:09:55,381 --> 01:09:57,130 Davin: Εντάξει, έτσι εσείς ήθελε να δει Atoi. 1755 01:09:57,130 --> 01:09:58,480 1756 01:09:58,480 --> 01:10:02,820 Εντάξει, έτσι ακριβώς really-- έτσι ώστε ό, τι θέλετε να κάνετε 1757 01:10:02,820 --> 01:10:04,969 Είναι πρόκειται να είναι δοθεί κάποιου είδους αριθμό. 1758 01:10:04,969 --> 01:10:07,010 Αλλά αυτός ο αριθμός δεν είναι πρόκειται να είναι ένα int, σωστά; 1759 01:10:07,010 --> 01:10:08,574 Τι είναι αυτό που πηγαίνει να είναι; 1760 01:10:08,574 --> 01:10:09,480 >> Φοιτητής: [δεν ακούγεται]. 1761 01:10:09,480 --> 01:10:11,146 >> Davin: Είναι πρόκειται να είναι ένα string, σωστά; 1762 01:10:11,146 --> 01:10:13,160 Έτσι, αν σας δόθηκε α string-- ας say-- 1763 01:10:13,160 --> 01:10:15,228 >> ROB: Θα πρέπει να σηκώσει έναν συντάκτη; 1764 01:10:15,228 --> 01:10:16,200 Μπορώ να τραβήξει up-- 1765 01:10:16,200 --> 01:10:16,800 >> Davin: Ω, θέλετε να το κάνετε on-- 1766 01:10:16,800 --> 01:10:17,420 >> ROB: Θα προτιμούσατε το διοικητικό συμβούλιο; 1767 01:10:17,420 --> 01:10:18,800 >> Davin: Τι θέλετε να κάνετε; 1768 01:10:18,800 --> 01:10:19,900 Θέλω να πω, δεν θέλετε να το κάνετε με το χέρι; 1769 01:10:19,900 --> 01:10:21,460 Ή μήπως θέλετε να το κάνετε με τον υπολογιστή; 1770 01:10:21,460 --> 01:10:22,180 >> ROB: Κάν 'το με το χέρι. 1771 01:10:22,180 --> 01:10:22,805 >> Davin: [Γελάει] 1772 01:10:22,805 --> 01:10:23,950 ROB: Κάν 'το με το χέρι. 1773 01:10:23,950 --> 01:10:25,469 >> Davin: Εντάξει, γι 'αυτό πρόκειται να είναι Atoi. 1774 01:10:25,469 --> 01:10:27,760 Έτσι τι είναι it-- εννοώ, θα πιθανόν να δώσει σε αυτό σε εσάς. 1775 01:10:27,760 --> 01:10:29,106 Αλλά τι είναι αυτό που πρόκειται να επιστρέψει; 1776 01:10:29,106 --> 01:10:29,452 >> ΜΑΘΗΤΗ: Int. 1777 01:10:29,452 --> 01:10:31,076 >> Davin: Δεν πρόκειται να επιστρέψει int, σωστά; 1778 01:10:31,076 --> 01:10:33,772 So-- δεν θέλω να το κάνω εκεί. 1779 01:10:33,772 --> 01:10:34,510 Θα το κάνω εδώ. 1780 01:10:34,510 --> 01:10:36,596 >> ROB: Μπορείτε να το τραβήξετε προς τα κάτω και στη συνέχεια σπρώξτε επάνω σε αυτό. 1781 01:10:36,596 --> 01:10:38,500 1782 01:10:38,500 --> 01:10:40,385 >> Davin: ναι. 1783 01:10:40,385 --> 01:10:43,880 [Γέλια] αλλάξει το παιχνίδι. 1784 01:10:43,880 --> 01:10:50,950 Εντάξει, γι 'αυτό πρόκειται να είναι int Atoi, και τι είναι αυτό που πρόκειται να πάρει; 1785 01:10:50,950 --> 01:10:52,180 1786 01:10:52,180 --> 01:10:57,780 Ένα αστέρι char, έτσι απλά μια κορδόνι, το άστρο, όπως αυτό. 1787 01:10:57,780 --> 01:10:59,240 >> ROB: Νίκαια αστέρι, ωραία. 1788 01:10:59,240 --> 01:11:02,582 1789 01:11:02,582 --> 01:11:04,040 Davin: Αυτό μπορεί να μην είναι εκεί, εντάξει. 1790 01:11:04,040 --> 01:11:04,540 ROB: Ναι. 1791 01:11:04,540 --> 01:11:06,670 Davin: Εντάξει, έτσι το πρώτο πράγμα που θέλετε να do-- μου 1792 01:11:06,670 --> 01:11:08,490 Δεν ξέρω αν κάποιος κοίταξε στο solutions-- πρακτική 1793 01:11:08,490 --> 01:11:10,150 αλλά αυτό που θα πάμε να θέλετε να κάνετε είναι να είστε 1794 01:11:10,150 --> 01:11:11,570 πρόκειται να θέλουν να έχουν ένας βρόχος, επειδή είστε 1795 01:11:11,570 --> 01:11:14,100 πρόκειται να θέλουν πραγματικά να βήμα μέσω αυτής της σειράς. 1796 01:11:14,100 --> 01:11:18,880 Έτσι helpful-- οπότε ας πούμε θα πάμε σε ένα βρόχο for, 1797 01:11:18,880 --> 01:11:22,270 και θα πάμε να το βήμα μέσω κάθε στοιχείο του string. 1798 01:11:22,270 --> 01:11:23,470 Πόσο καιρό είναι αυτό; 1799 01:11:23,470 --> 01:11:26,464 Πόσες φορές θα πάμε να επαναλάβει ότι για βρόχο; 1800 01:11:26,464 --> 01:11:27,130 ΜΑΘΗΤΗ: Sterln; 1801 01:11:27,130 --> 01:11:27,963 Davin: Sterln, ναι. 1802 01:11:27,963 --> 01:11:29,350 1803 01:11:29,350 --> 01:11:41,294 Έτσι, ας πούμε το μήκος int ισούται sterln s. 1804 01:11:41,294 --> 01:11:44,240 1805 01:11:44,240 --> 01:11:48,740 Και απλά περίεργος, γιατί είναι πάντα το είδος του καλύτερα να το κάνετε αυτό εκτός των βρόχων; 1806 01:11:48,740 --> 01:11:52,277 Όπως, γιατί είναι καλύτερα να καλέσετε Αυτή η λειτουργία έξω από ένα βρόχο; 1807 01:11:52,277 --> 01:11:53,360 Ακριβώς ελέγξτε μια γρήγορη λογική; 1808 01:11:53,360 --> 01:11:55,810 1809 01:11:55,810 --> 01:11:56,311 Ναι; 1810 01:11:56,311 --> 01:11:58,268 Φοιτητής: έτσι ώστε να μην πρέπει να διατηρήσει τον έλεγχο αυτό. 1811 01:11:58,268 --> 01:11:59,400 Μπορείτε απλά [δεν ακούγεται]. 1812 01:11:59,400 --> 01:12:01,560 >> Davin: Ακριβώς, οπότε ναι, ακριβώς ό, τι είπε. 1813 01:12:01,560 --> 01:12:03,101 Έτσι δεν έχουμε να κρατήσει τον έλεγχο αυτό. 1814 01:12:03,101 --> 01:12:05,690 Έτσι για παράδειγμα, αν είμαι καλώντας Αυτή η λειτουργία μέσα σε ένα βρόχο, 1815 01:12:05,690 --> 01:12:08,050 τότε Πάω να κρατήσει καλώντας Η λειτουργία αυτή πολλές φορές. 1816 01:12:08,050 --> 01:12:10,080 Και αυτό πρόκειται να μειωθεί η αποτελεσματικότητα του προγράμματος σας. 1817 01:12:10,080 --> 01:12:12,370 Έτσι είναι πάντα χρήσιμο να το δηλώσουν έξω. 1818 01:12:12,370 --> 01:12:14,370 >> ROB: Αυτό λέγεται, για οποιοδήποτε από αυτά τα προβλήματα, 1819 01:12:14,370 --> 01:12:17,940 λίγο πολύ όσο μπορείτε να πάρετε μια διαλύματος εργασίας, μπορείτε να πάρετε την πλήρη πίστωση. 1820 01:12:17,940 --> 01:12:20,820 Γι 'αυτό μην ανησυχείτε αν το σχέδιό σας είναι απολύτως φρικτό. 1821 01:12:20,820 --> 01:12:22,120 1822 01:12:22,120 --> 01:12:25,230 Θα μπορούσε να μας κάνει να αναστατώσει διαβάζοντας τον κωδικό σας. 1823 01:12:25,230 --> 01:12:28,160 Αλλά εφ 'όσον αυτό λειτουργεί, θα πάρετε τα σημεία. 1824 01:12:28,160 --> 01:12:29,302 >> Davin: Ναι. 1825 01:12:29,302 --> 01:12:31,260 Εντάξει, έτσι ώστε στη συνέχεια Πάω να δηλώνουν κάποια μεταβλητή. 1826 01:12:31,260 --> 01:12:33,900 Είναι ακριβώς πρόκειται να καλέσετε άθροισμα int. 1827 01:12:33,900 --> 01:12:37,031 Και Πάω να θέσει αυτό ισούται με μηδέν, όπως αυτό. 1828 01:12:37,031 --> 01:12:38,780 Και αυτό ακριβώς πρόκειται να είναι ένα σύμβολο κράτησης θέσης. 1829 01:12:38,780 --> 01:12:40,960 Έτσι, αυτό πρόκειται να είναι τι Πάω να επιστρέψουν. 1830 01:12:40,960 --> 01:12:43,730 Έτσι, Πάω να τελικά άθροισμα επιστρέψει από αυτό το πρόγραμμα. 1831 01:12:43,730 --> 01:12:44,980 Έτσι, δεν έχω αυτές τις δύο μεταβλητές. 1832 01:12:44,980 --> 01:12:45,563 Έχω μήκος. 1833 01:12:45,563 --> 01:12:46,500 Έχω ποσό. 1834 01:12:46,500 --> 01:12:48,290 Και τώρα ας άλμα σε κορδόνι μας. 1835 01:12:48,290 --> 01:12:49,510 >> Έτσι αφήνει να έχει μας για βρόχο. 1836 01:12:49,510 --> 01:13:06,520 Έτσι, τέσσερις int i ισούται με 0 W, ενώ Ι είναι μικρότερο από το μήκος Ι συν συν. 1837 01:13:06,520 --> 01:13:07,150 Και now-- 1838 01:13:07,150 --> 01:13:10,920 1839 01:13:10,920 --> 01:13:11,420 ROB: Νίκαια. 1840 01:13:11,420 --> 01:13:14,030 Davin: Εντάξει, και τώρα εδώ έρχεται το κρέας του κωδικού μας. 1841 01:13:14,030 --> 01:13:17,380 Έτσι μπορείτε πραγματικά να κάνετε Αυτό ουσιαστικά σε μία γραμμή. 1842 01:13:17,380 --> 01:13:20,702 Έτσι κάνει κάποιος έχει μια ιδέα από ό, τι θα πάμε να κάνουμε το επόμενο βήμα; 1843 01:13:20,702 --> 01:13:23,680 1844 01:13:23,680 --> 01:13:25,380 Εντάξει, έτσι αυτό είναι εντάξει. 1845 01:13:25,380 --> 01:13:35,860 Έτσι κάνουμε να πω άθροισμα equals-- επιτρέψτε μου να τρέχω αυτή over-- άθροισμα 1846 01:13:35,860 --> 01:13:50,010 ισούται με ποσό 10 φορές plus-- είμαστε πρόκειται να πάρει Πιάσε μείον ένα 1847 01:13:50,010 --> 01:13:54,787 παραθέτω ένα απόσπασμα 0 γίνει, όπως αυτό. 1848 01:13:54,787 --> 01:13:55,620 ROB: Πολύ έξυπνο. 1849 01:13:55,620 --> 01:13:56,980 1850 01:13:56,980 --> 01:13:57,880 >> Davin: Θρυμματισμένο αυτό. 1851 01:13:57,880 --> 01:14:01,438 Εντάξει, έτσι someone-- το πήρα, το πήρα. 1852 01:14:01,438 --> 01:14:03,680 1853 01:14:03,680 --> 01:14:06,960 Εντάξει, έτσι αυτό είναι σαφώς ανεβαίνει. 1854 01:14:06,960 --> 01:14:08,320 1855 01:14:08,320 --> 01:14:09,450 Τι σημαίνει αυτό; 1856 01:14:09,450 --> 01:14:12,120 Έτσι Ξέρει κανείς τι σημαίνει αυτό; 1857 01:14:12,120 --> 01:14:13,826 Μπορεί ο καθένας να δει αυτό; 1858 01:14:13,826 --> 01:14:16,088 Όχι, κανείς δεν μπορεί να δει αυτό, εντάξει. 1859 01:14:16,088 --> 01:14:17,390 1860 01:14:17,390 --> 01:14:18,340 Πάω to-- 1861 01:14:18,340 --> 01:14:20,506 >> ROB: Πάω να γράψω το τύπο ακριβώς εδώ. 1862 01:14:20,506 --> 01:14:23,140 Davin: Εντάξει, Rob πρόκειται να το κάνω στον υπολογιστή, το οποίο είναι διασκεδαστικό. 1863 01:14:23,140 --> 01:14:26,889 1864 01:14:26,889 --> 01:14:27,514 ROB: Θεέ μου. 1865 01:14:27,514 --> 01:14:34,340 1866 01:14:34,340 --> 01:14:35,010 Ή δεν θα το κάνω. 1867 01:14:35,010 --> 01:14:36,288 1868 01:14:36,288 --> 01:14:36,954 Davin: Stand by. 1869 01:14:36,954 --> 01:14:42,300 1870 01:14:42,300 --> 01:14:44,260 Φοιτητής: Έχω μια ερώτηση. 1871 01:14:44,260 --> 01:14:45,348 Davin: Ναι, σίγουρα. 1872 01:14:45,348 --> 01:14:46,223 Φοιτητής: [δεν ακούγεται]; 1873 01:14:46,223 --> 01:14:52,529 1874 01:14:52,529 --> 01:14:54,570 Davin: Εντάξει, έτσι είναι στην πραγματικότητα, όπως, μόνο σε γενικές γραμμές, 1875 01:14:54,570 --> 01:14:56,710 αν ήταν να θέσει, όπως, στην παρούσα δήλωση int 1876 01:14:56,710 --> 01:14:59,770 Ι ισούται με το μήκος 0 κόμμα ισούται sterln, that-- 1877 01:14:59,770 --> 01:15:01,200 >> Φοιτητής: [δεν ακούγεται]. 1878 01:15:01,200 --> 01:15:03,585 >> Davin: Αυτό είναι εντάξει, επειδή that-- 1879 01:15:03,585 --> 01:15:05,543 Φοιτητής: Γιατί θα χρειάζεται καν να χρησιμοποιήσει το μήκος; 1880 01:15:05,543 --> 01:15:08,620 Γιατί δεν θα μπορούσε απλά [δεν ακούγεται] sterln s, όπως και όλο το χρόνο [δεν ακούγεται]; 1881 01:15:08,620 --> 01:15:09,460 >> Davin: Εννοείς εδώ; 1882 01:15:09,460 --> 01:15:10,001 >> Φοιτητής: Ναι. 1883 01:15:10,001 --> 01:15:12,630 Davin: Επειδή κάθε χρόνο αυτό για loop εκτελείται, 1884 01:15:12,630 --> 01:15:14,295 πρόκειται να αξιολογήσει αυτή την κατάσταση. 1885 01:15:14,295 --> 01:15:14,920 Φοιτητής: Δεξιά. 1886 01:15:14,920 --> 01:15:16,836 Davin: Και αν έχετε sterln εκεί, τότε είναι 1887 01:15:16,836 --> 01:15:19,510 Θα πρέπει να καλέσετε στην πραγματικότητα ότι η λειτουργία κάθε φορά. 1888 01:15:19,510 --> 01:15:21,090 Έτσι, αντί απλά συγκρίνοντάς το με ένα int, 1889 01:15:21,090 --> 01:15:23,548 εσείς πρόκειται να πρέπει να ζητούν μια λειτουργία και στη συνέχεια, συγκρίνοντάς 1890 01:15:23,548 --> 01:15:24,510 με την τιμή επιστροφής. 1891 01:15:24,510 --> 01:15:25,860 Ναι, έτσι είναι ακριβώς, ναι. 1892 01:15:25,860 --> 01:15:28,860 1893 01:15:28,860 --> 01:15:30,770 >> Ωραία, εντάξει, έτσι τώρα ο καθένας μπορεί να το δει. 1894 01:15:30,770 --> 01:15:33,400 Τι does-- αυτό είναι σαν, αυτό είναι. 1895 01:15:33,400 --> 01:15:34,580 Αυτή είναι η μαρμελάδα, εδώ. 1896 01:15:34,580 --> 01:15:37,030 1897 01:15:37,030 --> 01:15:37,930 Τι σημαίνει αυτό; 1898 01:15:37,930 --> 01:15:39,250 1899 01:15:39,250 --> 01:15:39,970 Τι κάνω; 1900 01:15:39,970 --> 01:15:41,890 1901 01:15:41,890 --> 01:15:42,880 Ναι, μια ιδέα; 1902 01:15:42,880 --> 01:15:43,482 Ναι; 1903 01:15:43,482 --> 01:15:45,692 >> Φοιτητής: Λοιπόν, έτσι ώστε όταν είστε εισέρχονται μια σειρά, 1904 01:15:45,692 --> 01:15:47,525 θα πάμε να πηγαίνουν από αριστερά προς τα δεξιά, 1905 01:15:47,525 --> 01:15:51,786 έτσι θα πάμε να πηγαίνουν στο δεκαδικά από κάτω από την [δεν ακούγεται]. 1906 01:15:51,786 --> 01:15:52,410 Davin: Ακριβώς. 1907 01:15:52,410 --> 01:15:55,063 Φοιτητής: Έτσι, κάθε μία θα πρέπει να πολλαπλασιάσετε 1908 01:15:55,063 --> 01:15:59,490 αυτό που είδαν ως την αξία του int από ο χρόνος που μπορείτε να πάρετε για να μετακινήσετε ότι πάνω από το ένα. 1909 01:15:59,490 --> 01:16:01,590 >> Davin: Τέλεια, τέλεια, Έτσι, για παράδειγμα, ας 1910 01:16:01,590 --> 01:16:05,376 να πω ότι έδωσε you-- είμαι πρόκειται να γράψω εδώ πέρα. 1911 01:16:05,376 --> 01:16:06,480 Όχι, δεν είμαι. 1912 01:16:06,480 --> 01:16:08,640 Πάω να γράψω εδώ πέρα. 1913 01:16:08,640 --> 01:16:12,080 Ας πούμε ότι σας έδωσα 76, σωστά; 1914 01:16:12,080 --> 01:16:13,380 Ας πούμε ότι έχετε δώσει 76. 1915 01:16:13,380 --> 01:16:15,360 Αυτό είναι ένα string για να αρχίσει με, εντάξει; 1916 01:16:15,360 --> 01:16:16,840 >> Έτσι, το μήκος είναι αυτό; 1917 01:16:16,840 --> 01:16:18,060 1918 01:16:18,060 --> 01:16:19,060 2, σωστά; 1919 01:16:19,060 --> 01:16:20,290 Άθροισμα είναι 0. 1920 01:16:20,290 --> 01:16:21,600 Στη συνέχεια άλμα σε μας για βρόχο. 1921 01:16:21,600 --> 01:16:24,187 Εντάξει, η πρώτη επανάληψη της αυτό, τι είναι αυτό που πρόκειται να είναι; 1922 01:16:24,187 --> 01:16:25,270 Είναι πρόκειται να είναι άθροισμα είναι 0. 1923 01:16:25,270 --> 01:16:27,180 Έτσι συνοψίσω φορές 10 0. 1924 01:16:27,180 --> 01:16:28,500 Αυτό είναι χωρίς νόημα. 1925 01:16:28,500 --> 01:16:29,880 Τότε τι κάνει αυτό; 1926 01:16:29,880 --> 01:16:30,845 1927 01:16:30,845 --> 01:16:31,720 Φοιτητής: [δεν ακούγεται]. 1928 01:16:31,720 --> 01:16:33,110 1929 01:16:33,110 --> 01:16:37,430 >> Davin: Δεν πρόκειται να γυρίσει ότι χαρακτήρα σε έναν ακέραιο αριθμό, σωστά; 1930 01:16:37,430 --> 01:16:42,160 Είναι κάτι σαν με σας πρόβλημα set-- αυτό light-- 1931 01:16:42,160 --> 01:16:44,170 είναι το είδος του όπως και με πρόβλημα που να Visioneer. 1932 01:16:44,170 --> 01:16:45,980 Είσαι ασχολούνται με τιμές ASCII. 1933 01:16:45,980 --> 01:16:48,520 Έτσι, αν σας δίνω, όπως, ένα επτά, αλλά είναι ένας χαρακτήρας, 1934 01:16:48,520 --> 01:16:50,965 και θέλετε να ξέρετε, Εντάξει, τι ψηφίο είναι αυτό; 1935 01:16:50,965 --> 01:16:53,540 1936 01:16:53,540 --> 01:16:54,910 Ναι, θα μπορούσε, ναι. 1937 01:16:54,910 --> 01:16:55,900 Έτσι, ποιο ψηφίο είναι αυτό; 1938 01:16:55,900 --> 01:16:59,550 Θα μπορούσατε να αφαιρέσουμε 0 από αυτό, αλλά σας πρέπει να αφαιρέσετε το 0, το χαρακτήρα. 1939 01:16:59,550 --> 01:17:01,425 >> Και όταν κάποιοι άνθρωποι να σκοντάψει επάνω, από όπου και αν 1940 01:17:01,425 --> 01:17:04,260 όπως, εντάξει, καλά, εγώ πρέπει να ξέρω οι τιμές ASCII για αυτό το κουίζ; 1941 01:17:04,260 --> 01:17:06,218 Όχι, σίγουρα δεν Πρέπει να γνωρίζετε το ASCII 1942 01:17:06,218 --> 01:17:09,520 αξίες της, όπως, πεζά α, κεφαλαίο A, μηδέν. 1943 01:17:09,520 --> 01:17:12,060 >> ROB: Δεν υπάρχει κανένας λόγος να ποτέ βάλει αυτό στο σκονάκι. 1944 01:17:12,060 --> 01:17:14,226 >> Davin: Σίγουρα δεν κάνουμε σπαταλάτε το χώρο σας με αυτό. 1945 01:17:14,226 --> 01:17:18,090 Μπορείτε να literally-- ακριβώς αντί του λέγοντας 48, όπως μέχρι 1946 01:17:18,090 --> 01:17:24,630 εκεί, που είναι ισοδύναμο με λέγοντας μία, μία απόστροφο, 1947 01:17:24,630 --> 01:17:27,680 όπως αυτό, ακριβώς το ίδιο. 1948 01:17:27,680 --> 01:17:34,106 >> ROB: Θα μπορούσε σχεδόν να σκεφτείτε της ως if-- Θεό, έχω ανάγκη μου, 1949 01:17:34,106 --> 01:17:37,490 oops-- θα μπορούσε σχεδόν να το σκέφτομαι αυτό σαν να έχουμε κάτι σαν αυτό το hash 1950 01:17:37,490 --> 01:17:39,755 ορίζουν 0 ως 48. 1951 01:17:39,755 --> 01:17:41,320 1952 01:17:41,320 --> 01:17:42,030 Αυτό δεν θα λειτουργήσει. 1953 01:17:42,030 --> 01:17:45,502 Αλλά σκεφτείτε το σαν ενιαίο απόσπασμα 0 ενιαία προσφορά, και για όλους τους χαρακτήρες. 1954 01:17:45,502 --> 01:17:47,960 Σκεφτείτε το σαν μια σταθερά που αντιπροσωπεύει αυτήν την τιμή ASCII. 1955 01:17:47,960 --> 01:17:49,080 >> Davin: Ναι. 1956 01:17:49,080 --> 01:17:52,820 Εντάξει, έτσι η πρώτη φορά μέσα, έτσι με 76-- έτσι η πρώτη φορά μέσα, 1957 01:17:52,820 --> 01:17:57,260 Αυτό είναι ακριβώς ο χαρακτήρας 7 μείον το χαρακτήρα 0, 1958 01:17:57,260 --> 01:18:00,420 και αυτά είναι επτά integers-- καλά, εκείνα 1959 01:18:00,420 --> 01:18:04,030 είναι επτά θέσεις μακριά από κάθε άλλο στο διάγραμμα ASCII ή οτιδήποτε άλλο. 1960 01:18:04,030 --> 01:18:06,770 Έτσι, ότι πρόκειται να επιστρέψει μια int του 7. 1961 01:18:06,770 --> 01:18:08,720 Μέχρι τώρα, ποσό ίσο με 7. 1962 01:18:08,720 --> 01:18:10,830 >> Εντάξει, καλά, ας άλμα σε αυτό για το βρόχο και πάλι. 1963 01:18:10,830 --> 01:18:13,010 Εντάξει, τώρα είναι άθροισμα 10 φορές. 1964 01:18:13,010 --> 01:18:15,800 Έτσι είστε αποτελεσματικά μετακίνηση του 7 προς τα αριστερά. 1965 01:18:15,800 --> 01:18:17,542 Μήπως αυτό έχει νόημα; 1966 01:18:17,542 --> 01:18:19,250 Είσαι αποτελεσματικά κινείται προς τα αριστερά. 1967 01:18:19,250 --> 01:18:21,790 >> Και τότε θα add-- αυτό πρόκειται να είναι μείον 6 0. 1968 01:18:21,790 --> 01:18:22,650 Αυτό είναι 6. 1969 01:18:22,650 --> 01:18:24,752 Γι 'αυτό πρόκειται να είναι 70 συν 6. 1970 01:18:24,752 --> 01:18:25,996 76, που είναι ο αριθμός σας. 1971 01:18:25,996 --> 01:18:28,370 Έτσι, ανεξάρτητα από το ποιος είναι ο αριθμός Σας έδωσα, είναι αργά μόνο 1972 01:18:28,370 --> 01:18:31,610 πρόκειται να μετατοπίσει τις μεγαλύτερες τιμές προς τα αριστερά, 1 παράγοντα 10 1973 01:18:31,610 --> 01:18:35,525 κάθε φορά στο βρόχο for, και στη συνέχεια να προσθέσετε ως αναγκαία. 1974 01:18:35,525 --> 01:18:37,350 1975 01:18:37,350 --> 01:18:37,865 >> Στο πίσω μέρος; 1976 01:18:37,865 --> 01:18:40,240 Φοιτητής: Δεν έχουμε να κάνουμε οποιοδήποτε έλεγχο στο πρόγραμμα; 1977 01:18:40,240 --> 01:18:41,580 1978 01:18:41,580 --> 01:18:44,302 >> ROB: Έτσι, όσον αφορά τον έλεγχο ισχύει και για το πρόγραμμα, 1979 01:18:44,302 --> 01:18:46,510 θα σας πω αρκετά πολύ αυτό που πρέπει να ελέγξετε. 1980 01:18:46,510 --> 01:18:48,670 Αν δεν σας πω τίποτα, τότε γενικά 1981 01:18:48,670 --> 01:18:50,320 υποθέσουμε ότι έχετε να ελέγξετε τα περισσότερα πράγματα. 1982 01:18:50,320 --> 01:18:54,772 Όπως ίσως, ακριβώς για να είναι ασφαλής, μπορείτε θα πρέπει πιθανώς να ελέγξει hey, είναι s null; 1983 01:18:54,772 --> 01:18:56,230 Στη συνέχεια, δεν έχω ιδέα τι να επιστρέψουν. 1984 01:18:56,230 --> 01:18:58,814 Αλλά θα σας πω Αυτό το είδος του πράγματος. 1985 01:18:58,814 --> 01:18:59,480 0, δεν ξέρω. 1986 01:18:59,480 --> 01:19:02,786 >> Davin: Και γιατί θα θέλετε να επανεξετάσει εάν s ισούται με μηδενική; 1987 01:19:02,786 --> 01:19:03,660 Φοιτητής: [δεν ακούγεται]. 1988 01:19:03,660 --> 01:19:04,880 Davin: Λόγω του κάρβουνου αστέρων. 1989 01:19:04,880 --> 01:19:05,510 Είναι ένας δείκτης. 1990 01:19:05,510 --> 01:19:09,240 Έτσι, ένα απολύτως αποδεκτό δήλωση, θα μπορούσα να πω, εντάξει, 1991 01:19:09,240 --> 01:19:11,917 s ισούται με μηδενική, διότι θα μπορούσε να είναι ένας δείκτης για την τιμή null. 1992 01:19:11,917 --> 01:19:14,250 Έτσι, κάθε φορά που έχετε δείκτες στο δρόμο σας σε αυτό, όπως, 1993 01:19:14,250 --> 01:19:15,420 μάλλον θα πρέπει να ελέγξετε. 1994 01:19:15,420 --> 01:19:18,461 Διότι, αν δεν έχετε ελέγξει ότι, και τότε μπορείτε στη συνέχεια να πάει σε σας για βρόχο, 1995 01:19:18,461 --> 01:19:20,100 και είστε doing-- τρέχω προς τα κάτω. 1996 01:19:20,100 --> 01:19:21,980 1997 01:19:21,980 --> 01:19:22,920 Εξορμώ κάτω. 1998 01:19:22,920 --> 01:19:23,860 >> ROB: Συγγνώμη, αυτό είναι όλο. 1999 01:19:23,860 --> 01:19:25,860 >> Davin: Και έτσι, όπως, εάν είναι άκυρη, και στη συνέχεια θα 2000 01:19:25,860 --> 01:19:28,267 κάνουμε αυτό, τι λάθος θα πας να πάρετε; 2001 01:19:28,267 --> 01:19:29,850 Φοιτητής: Θα πάμε να πάρετε μια σειρά σφαλμάτων. 2002 01:19:29,850 --> 01:19:31,250 Davin: Θα πάμε για να ρυθμίσετε υπαιτιότητα, σωστά, επειδή είστε 2003 01:19:31,250 --> 01:19:32,616 προσπαθούν να δείκτη σε μηδενική. 2004 01:19:32,616 --> 01:19:35,240 Έτσι θα πάμε να προσπαθήσουμε να δείκτη στη μνήμη που δεν σας ανήκουν. 2005 01:19:35,240 --> 01:19:39,550 Έτσι αυτό, εάν αυτό είναι μηδενική, και μπορείτε να το κάνετε αυτό, θα σας κύκλο. 2006 01:19:39,550 --> 01:19:43,656 >> ROB: Πιστεύω, επίσης, για την εξέταση στην οποία ζητήσαμε αυτήν την ερώτηση, σας λέμε 2007 01:19:43,656 --> 01:19:45,655 ότι μπορείτε να υποθέσετε απλά είναι ένας θετικός αριθμός. 2008 01:19:45,655 --> 01:19:48,270 Επειδή Atoi αναμένεται επίσης να χειριστεί τους αρνητικούς αριθμούς, 2009 01:19:48,270 --> 01:19:49,686 έτσι θα πρέπει να ειδική περίπτωση. 2010 01:19:49,686 --> 01:19:53,080 Γεια σου, είναι ο πρώτος χαρακτήρας μια παύλα, οπότε, ΟΚ, 2011 01:19:53,080 --> 01:19:54,839 Τώρα αυτό είναι ένα αρνητικό ακέραιο. 2012 01:19:54,839 --> 01:19:56,380 Θα σας πω αυτά τα είδη των πραγμάτων. 2013 01:19:56,380 --> 01:19:58,005 Θα σας πω ό, τι χρειάζεστε για να χειριστεί. 2014 01:19:58,005 --> 01:19:59,310 Davin: Ναι. 2015 01:19:59,310 --> 01:20:02,530 Έτσι, είμαι βέβαιος ότι κάποιοι άνθρωποι μπορεί να have-- αν άρχισε να ψάχνει στο παλιό εξετάσεις, 2016 01:20:02,530 --> 01:20:03,900 Έχετε δει sterln. 2017 01:20:03,900 --> 01:20:05,120 Αυτό είναι ένα δημοφιλές ένα. 2018 01:20:05,120 --> 01:20:09,790 Και νομίζω ότι στην sterln, θα έπρεπε να κάνει τον έλεγχο αυτό για μηδενική, η επιστροφή 2019 01:20:09,790 --> 01:20:10,950 0 ή κάτι τέτοιο. 2020 01:20:10,950 --> 01:20:11,940 Όπως, θα έπρεπε να ελέγξει για μηδενική. 2021 01:20:11,940 --> 01:20:14,230 Και αν δεν το έκανε, ότι ήταν το σημείο μακριά στο κουίζ. 2022 01:20:14,230 --> 01:20:16,750 2023 01:20:16,750 --> 01:20:19,500 Έτσι κι αλλιώς, κάνει τους πάντες αισθάνεται εντάξει με Atoi; 2024 01:20:19,500 --> 01:20:21,112 2025 01:20:21,112 --> 01:20:22,820 Μήπως κάποιος θέλει να πάει πάνω από τα μέρη και πάλι; 2026 01:20:22,820 --> 01:20:23,815 2027 01:20:23,815 --> 01:20:25,565 ROB: Ω ναι, νομίζω Μπορούμε επίσης να σας πω 2028 01:20:25,565 --> 01:20:28,565 μπορούμε να υποθέσουμε ότι τα πάντα is-- ότι από όπου και αν πραγματικά την πληκτρολόγηση ενός αριθμού, 2029 01:20:28,565 --> 01:20:32,821 ότι δεν έχετε να ανησυχείτε για, όπως, επιστολές είναι στη σειρά, έτσι. 2030 01:20:32,821 --> 01:20:33,320 Davin: Ναι. 2031 01:20:33,320 --> 01:20:33,922 Ναι; 2032 01:20:33,922 --> 01:20:35,713 Φοιτητής: Μπορείτε να πάτε πάνω από μία φορά, όταν 2033 01:20:35,713 --> 01:20:37,860 μπορείτε να χρησιμοποιήσετε διπλά εισαγωγικά και μόνη προσφορά; 2034 01:20:37,860 --> 01:20:41,290 >> Davin: Σίγουρα, οπότε είναι διπλά εισαγωγικά, πολύ Με απλά λόγια, είναι διπλά εισαγωγικά είναι χορδές. 2035 01:20:41,290 --> 01:20:43,370 Έτσι, αν διπλασιαστεί απόσπασμα τίποτα, αυτό είναι ένα string. 2036 01:20:43,370 --> 01:20:48,270 Έτσι, όπως, αν είχα αυτό το 0 εδώ, και το έκανα αυτό, αυτό είναι ένα string. 2037 01:20:48,270 --> 01:20:50,060 Αυτό δεν είναι ένας χαρακτήρας. 2038 01:20:50,060 --> 01:20:54,816 Έτσι, δεν μπορώ να βρω αυτή την τιμή σε ASCII μου γράφημα, επειδή είναι ένα string, ναι. 2039 01:20:54,816 --> 01:20:57,770 2040 01:20:57,770 --> 01:20:59,480 >> Εντάξει, οποιεσδήποτε άλλες ερωτήσεις; 2041 01:20:59,480 --> 01:21:00,405 Ναι; 2042 01:21:00,405 --> 01:21:02,345 >> Φοιτητής: Έτσι έχετε ήδη απαντηθεί αυτό, 2043 01:21:02,345 --> 01:21:05,255 αλλά όπως, όταν στην πραγματικότητα είμαστε γράφοντας αυτό στο κουίζ, 2044 01:21:05,255 --> 01:21:08,165 θέλεις να μας για να γράψει με καθέτους μηδενικά [δεν ακούγεται]; 2045 01:21:08,165 --> 01:21:11,041 2046 01:21:11,041 --> 01:21:11,540 Davin: Όχι. 2047 01:21:11,540 --> 01:21:13,800 Το ερώτημα ήταν θα πρέπει να έχετε θέσει ένα κάθετο μέσα από τα μηδενικά 2048 01:21:13,800 --> 01:21:14,890 για να δείξει αν είναι μηδενικά; 2049 01:21:14,890 --> 01:21:15,890 Όχι, δεν θα το καταλάβω. 2050 01:21:15,890 --> 01:21:16,940 2051 01:21:16,940 --> 01:21:19,530 Ναι, ευχαριστώ, είναι καλοί. 2052 01:21:19,530 --> 01:21:20,860 Εντάξει, κάτι άλλο; 2053 01:21:20,860 --> 01:21:25,060 Μήπως κάποιος θέλει to-- έτσι νομίζω έχουμε τρέξει λίγο την πάροδο του χρόνου. 2054 01:21:25,060 --> 01:21:27,305 Θέλετε να δείτε ένα άλλο, ή; 2055 01:21:27,305 --> 01:21:28,096 Φοιτητής: RandomInt. 2056 01:21:28,096 --> 01:21:29,230 2057 01:21:29,230 --> 01:21:30,750 >> Davin: RandomInt, ΟΚ, ακριβώς. 2058 01:21:30,750 --> 01:21:32,975 Οπότε ας κάνουμε RandomInt. 2059 01:21:32,975 --> 01:21:34,395 2060 01:21:34,395 --> 01:21:35,270 Θα το κάνω εδώ. 2061 01:21:35,270 --> 01:21:36,770 2062 01:21:36,770 --> 01:21:39,210 Έτσι RandomInt είναι στην πραγματικότητα πολύ πιο απλή. 2063 01:21:39,210 --> 01:21:43,578 Νομίζω Atoi είναι ίσως το πιο δύσκολο ένα ότι έχουμε ζητήσει κατά τα προηγούμενα έτη. 2064 01:21:43,578 --> 01:21:44,453 Φοιτητής: [δεν ακούγεται]. 2065 01:21:44,453 --> 01:21:46,660 2066 01:21:46,660 --> 01:21:47,161 >> Davin: Τι; 2067 01:21:47,161 --> 01:21:49,493 ROB: Βλέπω αν είναι το είδος των ορατών από εδώ. 2068 01:21:49,493 --> 01:21:50,040 Davin: Είναι; 2069 01:21:50,040 --> 01:21:52,500 ROB: Δεν νομίζω ότι είναι going-- νομίζω πρόκειται να τρέξει προς τα δεξιά. 2070 01:21:52,500 --> 01:21:53,791 Davin: Εντάξει, έτσι θα το κάνω αυτό. 2071 01:21:53,791 --> 01:21:56,250 Και τότε μπορείτε απλά να βάλετε στην οθόνη. 2072 01:21:56,250 --> 01:21:57,150 >> ROB: Εντάξει. 2073 01:21:57,150 --> 01:21:58,190 >> Davin: Θέλετε να γραφέας μου; 2074 01:21:58,190 --> 01:21:58,600 >> ROB: Ναι. 2075 01:21:58,600 --> 01:21:59,100 >> Davin: Νίκαια. 2076 01:21:59,100 --> 01:22:01,210 2077 01:22:01,210 --> 01:22:02,727 Εντάξει, μπορώ να διαγράψει αυτό; 2078 01:22:02,727 --> 01:22:04,188 >> Φοιτητής: Ναι. 2079 01:22:04,188 --> 01:22:05,162 >> Davin: Αυτό είναι τόσο δύσκολο. 2080 01:22:05,162 --> 01:22:10,032 2081 01:22:10,032 --> 01:22:12,062 (Τραγούδι) Κάνεις τι κάνετε. 2082 01:22:12,062 --> 01:22:14,454 Και κάνει ό, τι δεν κάνουμε. 2083 01:22:14,454 --> 01:22:14,954 Εντάξει. 2084 01:22:14,954 --> 01:22:19,790 2085 01:22:19,790 --> 01:22:22,930 >> Εντάξει, αν θυμάμαι καλά, στις το κουίζ η RandomInt ήταν σαν, 2086 01:22:22,930 --> 01:22:26,190 Εντάξει, Πάω να σας δώσω δύο αριθμούς, σαν ένα και β. 2087 01:22:26,190 --> 01:22:30,380 Και θέλω να μου δώσεις ένα RandomInt μεταξύ αυτών των αριθμών. 2088 01:22:30,380 --> 01:22:33,440 Έτσι RandomInt πρόκειται να λάβει δύο numbers-- 2089 01:22:33,440 --> 01:22:41,690 τόσο RandomInt-- και είναι πρόκειται να επιστρέψει έναν int. 2090 01:22:41,690 --> 01:22:42,930 >> Έτσι ποια είναι η τιμή επιστροφής; 2091 01:22:42,930 --> 01:22:44,151 Σας είπα μόλις. 2092 01:22:44,151 --> 01:22:44,650 Int, σωστά; 2093 01:22:44,650 --> 01:22:46,400 2094 01:22:46,400 --> 01:22:49,260 Όπως αυτό, και τότε είναι πρόκειται να πάρει δύο ints. 2095 01:22:49,260 --> 01:22:56,301 Έτσι, πρόκειται να λάβει int α και β int, όπως αυτό. 2096 01:22:56,301 --> 01:22:58,217 Έτσι τι είναι RandomInt πρόκειται να κάνω είναι ότι πρόκειται 2097 01:22:58,217 --> 01:23:02,440 να επιστρέψει κάποια τυχαία τιμή μεταξύ αυτών των δύο τιμών. 2098 01:23:02,440 --> 01:23:05,140 Γι 'αυτό πρόκειται να είναι μεγαλύτερη από ένα, λιγότερο από το β. 2099 01:23:05,140 --> 01:23:09,020 Πιστεύω λοιπόν ότι ίσως μπορούμε να υποθέσουμε ότι a είναι η μικρότερη από τις δύο τιμές. 2100 01:23:09,020 --> 01:23:12,210 Έτσι, αν έχουμε να κάνουμε με τυχαιότητα, τι λειτουργίας 2101 01:23:12,210 --> 01:23:14,825 έχουμε δει ότι μας δίνει τυχαία πράγματα; 2102 01:23:14,825 --> 01:23:15,450 ΜΑΘΗΤΗ: Drand. 2103 01:23:15,450 --> 01:23:16,506 Davin: Drand, ακριβώς. 2104 01:23:16,506 --> 01:23:18,630 Έτσι θα πάμε να πιθανώς θέλετε να χρησιμοποιήσετε drand σας. 2105 01:23:18,630 --> 01:23:19,940 2106 01:23:19,940 --> 01:23:29,160 Έτσι, μπορείτε να πείτε int τυχαία, και θα απλώς να πω ότι ισούται με 0 τώρα. 2107 01:23:29,160 --> 01:23:30,170 2108 01:23:30,170 --> 01:23:38,690 Και όπου και αν θα πάμε να πούμε, Εντάξει, τυχαία ίσων drand 48. 2109 01:23:38,690 --> 01:23:39,747 2110 01:23:39,747 --> 01:23:40,830 Και τι σημαίνει αυτή η επιστροφή; 2111 01:23:40,830 --> 01:23:43,742 Τι σημαίνει αυτή η λειτουργία σας δώσει; 2112 01:23:43,742 --> 01:23:45,610 >> Φοιτητής: Μεταξύ 0 και 1. 2113 01:23:45,610 --> 01:23:47,870 >> Davin: Ναι, μεταξύ 0 και 1. 2114 01:23:47,870 --> 01:23:48,890 Έτσι πρόκειται να be-- 2115 01:23:48,890 --> 01:23:51,070 >> ROB: Και αυτό is-- νομίζω θα σας πω αυτό. 2116 01:23:51,070 --> 01:23:52,670 Όπως, μπορείτε να χρησιμοποιήσετε drand 48. 2117 01:23:52,670 --> 01:23:54,350 Μπορείτε να το επιβεβαιώσετε αυτό στο παρελθόν εξετάσεις. 2118 01:23:54,350 --> 01:23:56,720 Αλλά πιθανότατα θα σας πω μπορεί να χρησιμοποιήσει drand 48, η οποία 2119 01:23:56,720 --> 01:23:58,790 επιστρέφει ένα float μεταξύ 0 και 1. 2120 01:23:58,790 --> 01:24:00,830 >> Davin: Ναι, ναι, είμαι αρκετά σίγουρος για τις εξετάσεις 2121 01:24:00,830 --> 01:24:03,860 αυτό σας λέει πιθανώς θέλετε να χρησιμοποιήσετε drand, ναι. 2122 01:24:03,860 --> 01:24:07,041 Έτσι, πρόκειται να επιστρέψει κάποια τιμή μεταξύ 0 και 1. 2123 01:24:07,041 --> 01:24:08,790 Και τότε τι είσαι πρόκειται να θέλετε να κάνετε; 2124 01:24:08,790 --> 01:24:16,360 Λοιπόν, θέλετε να πολλαπλασιάσετε by-- περιμένετε, νομίζω ότι είναι σαν αυτό, συγγνώμη. 2125 01:24:16,360 --> 01:24:18,018 Θα κάνω ακριβώς αυτό. 2126 01:24:18,018 --> 01:24:19,410 Δεν ξέρω. 2127 01:24:19,410 --> 01:24:22,240 >> Έτσι, β μείον ένα. 2128 01:24:22,240 --> 01:24:23,310 2129 01:24:23,310 --> 01:24:24,490 Γιατί, λοιπόν, β μείον ένα; 2130 01:24:24,490 --> 01:24:26,110 2131 01:24:26,110 --> 01:24:30,490 Έτσι, ας πούμε drand σας δίνει πίσω μια int-- ΟΚ, θα το κάνω μόνο το υπόλοιπο, 2132 01:24:30,490 --> 01:24:33,380 έτσι συν ένα. 2133 01:24:33,380 --> 01:24:36,130 Έτσι τι does-- Υ είναι β μείον ένα. 2134 01:24:36,130 --> 01:24:40,670 Ας πούμε ότι drand σας δίνει πίσω η μέγιστη τιμή θα μπορούσε ενδεχομένως να 2135 01:24:40,670 --> 01:24:41,410 να σας δώσει. 2136 01:24:41,410 --> 01:24:42,409 Τι είναι αυτό πρόκειται να είναι; 2137 01:24:42,409 --> 01:24:43,010 Φοιτητής: 1. 2138 01:24:43,010 --> 01:24:44,430 >> Davin: 1, σωστά; 2139 01:24:44,430 --> 01:24:47,880 Επομένως, εάν αυτό είναι 1, και είστε πολλαπλασιάζοντάς την με β μείον ένα, 2140 01:24:47,880 --> 01:24:50,110 καλά, αυτό είναι ακριβώς το διαφορά μεταξύ του μείον Α 2141 01:24:50,110 --> 01:24:52,870 Και αν στη συνέχεια προσθέστε ότι πίσω σε ένα, ότι είναι ό, τι; 2142 01:24:52,870 --> 01:24:54,290 2143 01:24:54,290 --> 01:24:55,180 Είναι ουσιαστικά b. 2144 01:24:55,180 --> 01:24:56,435 2145 01:24:56,435 --> 01:24:57,310 Μήπως αυτό έχει νόημα; 2146 01:24:57,310 --> 01:24:57,851 >> Φοιτητής: Ναι. 2147 01:24:57,851 --> 01:24:59,480 2148 01:24:59,480 --> 01:25:02,170 >> Davin: Έτσι, αν αυτό είναι το μέγιστο εκτιμούν ότι θα μπορούσε ενδεχομένως να είναι, 2149 01:25:02,170 --> 01:25:03,175 πρόκειται να είναι 1. 2150 01:25:03,175 --> 01:25:04,122 2151 01:25:04,122 --> 01:25:06,330 Και τότε αυτό είναι ακριβώς το διαφορά μεταξύ των δύο. 2152 01:25:06,330 --> 01:25:11,410 Προσθέστε σε ένα, οπότε αυτό είναι πρόκειται να επιστρέψει τυχαία. 2153 01:25:11,410 --> 01:25:15,000 2154 01:25:15,000 --> 01:25:18,620 Και στην περίπτωση γωνία που drand σας δίνει πίσω 1, 2155 01:25:18,620 --> 01:25:20,970 τυχαία απλά θα πρέπει να αποτελεσματικά να b. 2156 01:25:20,970 --> 01:25:22,700 Αλλά αυτό είναι το μέγιστο που μπορεί να είναι. 2157 01:25:22,700 --> 01:25:27,420 Έτσι, αν πρόκειται να είναι μικρότερη από ότι, ας πούμε ότι, όπως του 0,9, 2158 01:25:27,420 --> 01:25:31,080 έτσι ώστε στη συνέχεια 0,9 φορές β μείον α πρόκειται να είναι μικρότερη 2159 01:25:31,080 --> 01:25:33,230 από τη διαφορά μεταξύ β μείον ένα. 2160 01:25:33,230 --> 01:25:35,830 >> Και στη συνέχεια, αν προσθέσετε ότι σε μια, τότε η τιμή αυτή είναι 2161 01:25:35,830 --> 01:25:38,986 πρόκειται να είναι μεγαλύτερο από ένα, διότι θέλετε να προσθέσετε κάτι πάνω σ 'αυτό, 2162 01:25:38,986 --> 01:25:40,360 αλλά πρόκειται να είναι μικρότερη από ό, τι β. 2163 01:25:40,360 --> 01:25:41,430 2164 01:25:41,430 --> 01:25:44,420 Έτσι θα πάμε να πάρετε ένα τυχαίο αριθμό, επειδή είστε καλώντας drand. 2165 01:25:44,420 --> 01:25:48,000 Και πως η rand, ότι τυχαίος αριθμός είναι πρόκειται να είναι κάπου ανάμεσα σε ένα 2166 01:25:48,000 --> 01:25:49,342 και b. 2167 01:25:49,342 --> 01:25:50,780 Μήπως αυτό έχει νόημα; 2168 01:25:50,780 --> 01:25:52,990 >> ROB: Ακριβώς για να το βάλετε στο σκυρόδεμα αριθμούς, έτσι 2169 01:25:52,990 --> 01:25:55,450 ας υποθέσουμε ότι θέλουμε να πάρει ένα τυχαίο αριθμό μεταξύ 7 και 10. 2170 01:25:55,450 --> 01:25:56,960 Έτσι, β μείον ένα είναι η σειρά μας. 2171 01:25:56,960 --> 01:26:00,150 Έτσι, υπάρχει μια σειρά από τρία αριθμούς που θέλουμε να διαλέξετε. 2172 01:26:00,150 --> 01:26:03,290 Και στη συνέχεια πολλαπλασιάζοντας ότι μεταξύ 0 και 1 1, 2173 01:26:03,290 --> 01:26:07,430 αν αυτό τότε μας δίνει some-- ας πούμε ότι μας δίνει 1.5. 2174 01:26:07,430 --> 01:26:10,670 >> Στη συνέχεια, 1.5, θέλουμε να πάμε 7 έως 10. 2175 01:26:10,670 --> 01:26:14,470 Έτσι, 1,5 συν 7 μας φέρνει πίσω σε 7 έως 10 γκάμα μας. 2176 01:26:14,470 --> 01:26:17,580 Και τότε είμαστε το αποθηκεύει στο εσωτερικό της ένας ακέραιος αριθμός, έτσι ώστε να περικοπεί μέχρι 8. 2177 01:26:17,580 --> 01:26:18,790 Και τότε θα επιστρέψουν μόλις αυτό. 2178 01:26:18,790 --> 01:26:21,310 Έτσι, β μείον ένα είναι η σειρά μας. 2179 01:26:21,310 --> 01:26:25,770 α μετατοπίζεται επάνω σε αριθμούς ότι θέλουμε μέσα σε αυτό το εύρος. 2180 01:26:25,770 --> 01:26:30,540 Έτσι, μεταξύ 7 και 10, και στη συνέχεια εμείς μπορεί να επιστρέψει ό, τι μπορούμε να καταλήξουμε με. 2181 01:26:30,540 --> 01:26:32,684 >> Davin: Ναι, ωραία. 2182 01:26:32,684 --> 01:26:34,470 >> ROB: Ευχαριστούμε. 2183 01:26:34,470 --> 01:26:35,628 >> Davin: Ναι, τι συμβαίνει; 2184 01:26:35,628 --> 01:26:39,746 >> Φοιτητής: Μήπως να τρέξει σε οποιοδήποτε είδος του Σφάλματα ASCII όταν we're-- αν drand είναι 2185 01:26:39,746 --> 01:26:40,996 επιστροφή ενός πλωτήρα [δεν ακούγεται]. 2186 01:26:40,996 --> 01:26:42,470 2187 01:26:42,470 --> 01:26:45,360 >> ROB: Έτσι ακριβώς όπως ο Rob είπε, γιατί τυχαία δεν είναι int, 2188 01:26:45,360 --> 01:26:47,080 έτσι drand θα είναι ένα πλωτήρα. 2189 01:26:47,080 --> 01:26:48,470 Έτσι και τότε πολλαπλασιάζει τα έξω. 2190 01:26:48,470 --> 01:26:50,507 Και μπορείτε να πάρετε κάποια το είδος των αριθμών float. 2191 01:26:50,507 --> 01:26:51,840 Και στη συνέχεια, πρόκειται να περικόψει. 2192 01:26:51,840 --> 01:26:52,339 >> Φοιτητής: Εντάξει. 2193 01:26:52,339 --> 01:26:53,019 Davin: Ναι. 2194 01:26:53,019 --> 01:26:56,060 ROB: Και αν ο compiler ήταν να προειδοποιήσει Σας περίπου, όπως, απώλεια της ακρίβειας, 2195 01:26:56,060 --> 01:26:58,986 μόλις ρίξει έναν int στην εκεί, και στη συνέχεια να είναι καλό. 2196 01:26:58,986 --> 01:27:00,398 2197 01:27:00,398 --> 01:27:00,898 Davin: Ναι; 2198 01:27:00,898 --> 01:27:02,332 2199 01:27:02,332 --> 01:27:04,722 >> Φοιτητής: Θα έχει το ίδια πιθανότητα να πάρει, 2200 01:27:04,722 --> 01:27:06,156 όπως, β ή [δεν ακούγεται]; 2201 01:27:06,156 --> 01:27:08,080 2202 01:27:08,080 --> 01:27:10,980 >> ROB: Έτσι is-- είμαι πραγματικά wondering-- είναι RandomInt υποτίθεται 2203 01:27:10,980 --> 01:27:14,362 να είναι μια σειρά από ένα σε λιγότερο από ό, τι β; 2204 01:27:14,362 --> 01:27:16,820 Όπως, αν είναι μεταξύ 7 και 10, ποιες είναι οι δυνατότητες; 2205 01:27:16,820 --> 01:27:18,454 7, 8, και 9, ή 7, 8, 9, 10; 2206 01:27:18,454 --> 01:27:19,120 Davin: ξεχάσω. 2207 01:27:19,120 --> 01:27:19,880 Σχετικά με το πρόβλημα set-- 2208 01:27:19,880 --> 01:27:20,570 >> ROB: Νομίζω ότι είναι 7, 8, 9. 2209 01:27:20,570 --> 01:27:22,785 >> Davin: Λέει συγκεκριμένα κάποιου χωρίς αποκλεισμούς και ένα αποκλειστικό. 2210 01:27:22,785 --> 01:27:23,110 >> ROB: Ναι. 2211 01:27:23,110 --> 01:27:23,670 >> Davin: Αλλά εγώ don't-- είμαι not-- 2212 01:27:23,670 --> 01:27:25,878 >> ROB: Έτσι νομίζω ότι αυτά είναι δεν περιλαμβάνεται, στην οποία περίπτωση, 2213 01:27:25,878 --> 01:27:28,152 υπάρχει μια ίση πιθανότητα 7, 8, και 9. 2214 01:27:28,152 --> 01:27:29,360 Δεν υπάρχει καμία πιθανότητα 10. 2215 01:27:29,360 --> 01:27:31,770 2216 01:27:31,770 --> 01:27:32,270 Davin: Ναι; 2217 01:27:32,270 --> 01:27:33,395 Φοιτητής: Έχω μια ερώτηση. 2218 01:27:33,395 --> 01:27:38,090 Θέλουμε να ορίσουμε μια συνάρτηση Δεν επιστρέφει μία τιμή, αλλά μια σειρά. 2219 01:27:38,090 --> 01:27:41,020 Τότε τι θα ήταν η σύνταξη μετά την επιστροφή; 2220 01:27:41,020 --> 01:27:44,604 >> Davin: Εντάξει, έτσι τότε θα would-- μετά την επιστροφή; 2221 01:27:44,604 --> 01:27:47,020 Ας πούμε ότι έχετε είχε δηλώσει μια σειρά κάπου εκεί πάνω. 2222 01:27:47,020 --> 01:27:49,708 Στη συνέχεια, θα επιστρέψει μόνο το όνομα της συστοιχίας. 2223 01:27:49,708 --> 01:27:50,676 >> Φοιτητής: Εντάξει, σας ευχαριστώ. 2224 01:27:50,676 --> 01:27:51,718 Στη συνέχεια, μόλις επιστρέψει με a-- 2225 01:27:51,718 --> 01:27:52,759 Davin: Ω περιμένετε, τόσο θλιβερό. 2226 01:27:52,759 --> 01:27:54,620 Το ερώτημα ήταν πώς δεν θα επιστρέψει έναν πίνακα. 2227 01:27:54,620 --> 01:27:56,170 >> ROB: Αν και αυτό δεν θα μπορούσε να είναι μια σειρά που δηλώθηκαν 2228 01:27:56,170 --> 01:27:57,260 στη στοίβα ή κάτι τέτοιο. 2229 01:27:57,260 --> 01:27:59,510 Θα πρέπει να είναι κάτι malloced, επειδή malloc 2230 01:27:59,510 --> 01:28:01,610 είναι το πώς μπορείτε να πάρετε γύρω αυτόματη κατανομή της μνήμης. 2231 01:28:01,610 --> 01:28:02,109 >> Davin: Ναι. 2232 01:28:02,109 --> 01:28:03,433 2233 01:28:03,433 --> 01:28:04,933 ROB: Πώς μπορείτε να πάρετε γύρω από την τοπική εμβέλεια. 2234 01:28:04,933 --> 01:28:09,670 2235 01:28:09,670 --> 01:28:11,550 >> Davin: Αλλά θα κάνατε μόλις επιστρέψει name-- της 2236 01:28:11,550 --> 01:28:17,890 >> Φοιτητής: [δεν ακούγεται] δεν είναι ένα τιμή, για παράδειγμα, δύο αριθμούς, έτσι 2237 01:28:17,890 --> 01:28:18,390 [Δεν ακούγεται]. 2238 01:28:18,390 --> 01:28:19,590 >> Davin: Δεν μπορείτε να επιστρέψετε πολλαπλές αριθμό. 2239 01:28:19,590 --> 01:28:20,850 Δεν μπορείτε, όπως, return-- 2240 01:28:20,850 --> 01:28:23,630 >> Φοιτητής: Μίλησα για την επιστροφή ένας πίνακας ή κάτι τέτοιο. 2241 01:28:23,630 --> 01:28:26,050 >> Davin: Ναι, έτσι το ερώτημα είναι μπορώ να επιστρέψω πολλαπλές τιμές. 2242 01:28:26,050 --> 01:28:27,460 Δεν μπορείτε να επιστρέψετε πολλαπλές τιμές. 2243 01:28:27,460 --> 01:28:30,270 Δεν μπορείτε, όπως, επιστρέφει μια συνέχεια β επιστρέψει ή κάτι τέτοιο. 2244 01:28:30,270 --> 01:28:32,710 Επειδή μετά την επιστροφή σας, μπορείτε επιστρέφει από τη λειτουργία. 2245 01:28:32,710 --> 01:28:35,790 Και στη συνέχεια η λειτουργία γίνεται, και όπως Rob είπε, είναι στη στοίβα. 2246 01:28:35,790 --> 01:28:38,260 >> Έτσι όλοι ότι η μνήμη παίρνει μόνο επιστρέφονται στον υπολογιστή. 2247 01:28:38,260 --> 01:28:40,025 Όλα ξεχνιέται, βασικά. 2248 01:28:40,025 --> 01:28:41,480 2249 01:28:41,480 --> 01:28:44,430 Έτσι, εάν θέλετε να επιστρέψετε πολλαπλές τιμές, θα πρέπει να επιστρέψει έναν πίνακα, 2250 01:28:44,430 --> 01:28:45,971 Και ο τρόπος που το κάνουμε αυτό είναι mallocing. 2251 01:28:45,971 --> 01:28:48,780 Και τότε θα επιστρέψει x τέτοιο. 2252 01:28:48,780 --> 01:28:50,280 Βασικά, μπορείτε απλά να επιστρέψετε το όνομα. 2253 01:28:50,280 --> 01:28:51,620 Και όταν επιστρέψετε κάτι σαν αυτό, είστε 2254 01:28:51,620 --> 01:28:53,200 στην πραγματικότητα δεν επιστρέφει την τιμή. 2255 01:28:53,200 --> 01:28:55,430 >> Ας πούμε ότι έχετε αποθηκεύσει οι τιμές σε μία συστοιχία. 2256 01:28:55,430 --> 01:28:57,910 Δεν είσαι πραγματικά επιστροφή αυτών των αξιών. 2257 01:28:57,910 --> 01:29:01,515 Όπως, αν επέστρεψα έναν int, είμαι επιστρέφουν πραγματικά αντίγραφα των αξιών. 2258 01:29:01,515 --> 01:29:02,017 2259 01:29:02,017 --> 01:29:03,850 Αλλά αν μου ήταν να επιστρέψει κάτι σαν αυτό, 2260 01:29:03,850 --> 01:29:06,450 Είμαι επιστρέφει μια αναφορά σε αυτές τις τιμές. 2261 01:29:06,450 --> 01:29:09,090 Έτσι είμαι επιστρέφει, ουσιαστικά, ένα διεύθυνση μνήμης με τις τιμές. 2262 01:29:09,090 --> 01:29:10,079 Μήπως αυτό έχει νόημα; 2263 01:29:10,079 --> 01:29:10,620 Φοιτητής: Ναι. 2264 01:29:10,620 --> 01:29:11,120 Davin: Νίκαια. 2265 01:29:11,120 --> 01:29:12,760 2266 01:29:12,760 --> 01:29:13,410 Ναι; 2267 01:29:13,410 --> 01:29:15,430 >> Φοιτητής: Όταν είσαι χρησιμοποιώντας drand εδώ, 2268 01:29:15,430 --> 01:29:17,660 δεν θα πρέπει να θέσει srand πριν από αυτό; 2269 01:29:17,660 --> 01:29:20,320 >> Davin: Όχι, όχι, εγώ δεν σκέφτομαι έτσι. 2270 01:29:20,320 --> 01:29:23,040 >> ROB: Ναι, έτσι έχετε να πω τίποτα για την srand; 2271 01:29:23,040 --> 01:29:26,900 Η προεπιλογή του ποτέ δεν λέει srand σε όλα είναι να κάνει ακριβώς srand του null. 2272 01:29:26,900 --> 01:29:29,350 Έτσι drand για δική του βούληση το έργο της. 2273 01:29:29,350 --> 01:29:33,759 Και θα τους σπόρους αυτόματα με η τρέχουσα ώρα, είναι ό, τι χρησιμοποιεί. 2274 01:29:33,759 --> 01:29:35,175 2275 01:29:35,175 --> 01:29:35,675 Davin: Ναι; 2276 01:29:35,675 --> 01:29:40,950 Φοιτητής: Σας [δεν ακούγεται] με τους αριθμούς; 2277 01:29:40,950 --> 01:29:42,570 Davin: Ναι, μπορείτε. 2278 01:29:42,570 --> 01:29:46,770 Φοιτητής: Έτσι, θα μπορούσατε λένε, όπως, 4 φορές 2. 2279 01:29:46,770 --> 01:29:50,280 Το πράγμα είναι, δεν μπορεί να αναλάβει τότε ένας int είναι τέσσερα byte. 2280 01:29:50,280 --> 01:29:51,020 Η only-- 2281 01:29:51,020 --> 01:29:53,830 >> Davin: Θέλω να πω, για το κουίζ μπορείτε. 2282 01:29:53,830 --> 01:29:54,830 [Γέλια] 2283 01:29:54,830 --> 01:29:55,780 >> ROB: λλ, όχι. 2284 01:29:55,780 --> 01:29:56,780 Davin: Ναι, ναι μπορείτε. 2285 01:29:56,780 --> 01:30:00,197 Αν σας ρωτήσω πόσο μεγάλη είναι η int είναι, δεν μπορείτε να είστε, όπως, τέσσερις ή οκτώ. 2286 01:30:00,197 --> 01:30:02,030 ROB: Ω, οπότε αν η ερώτημα είναι συγκεκριμένα, 2287 01:30:02,030 --> 01:30:04,857 παρόμοια, αν αυτό είναι ένα πρόβλημα κωδικοποίησης, θα πρέπει να πω το μέγεθος του int. 2288 01:30:04,857 --> 01:30:06,690 Αν πρόκειται για ένα τραπέζι, ή λέει πόσα bytes, 2289 01:30:06,690 --> 01:30:08,808 δεν θα πρέπει να συμπληρώσετε το μέγεθος των ints. 2290 01:30:08,808 --> 01:30:11,278 >> ΦΟΙΤΗΤΕΣ: [Γελάει] 2291 01:30:11,278 --> 01:30:18,210 2292 01:30:18,210 --> 01:30:20,580 >> Davin: Δεξιά, τόσο γιατί είναι το μέγεθος του int σημαντικό εδώ; 2293 01:30:20,580 --> 01:30:23,085 Έτσι, όπως, αν θα πάμε σε 32-bit επεξεργαστή ή κάτι τέτοιο, 2294 01:30:23,085 --> 01:30:24,300 τότε πρόκειται να είναι τέσσερα byte. 2295 01:30:24,300 --> 01:30:26,342 Αλλά για ορισμένα από τα νεότερα πράγματα, θα μπορούσε να είναι αυτό; 2296 01:30:26,342 --> 01:30:27,383 Θα μπορούσε να είναι οκτώ, σωστά; 2297 01:30:27,383 --> 01:30:30,550 Έτσι this-- αν απλά σκληρά κωδικό τέσσερα, Στη συνέχεια σε ορισμένες μηχανές, αυτό θα λειτουργήσει. 2298 01:30:30,550 --> 01:30:32,180 Μερικά μηχανήματα, δεν θα λειτουργήσει. 2299 01:30:32,180 --> 01:30:35,270 Αλλά αν στο κουίζ είμαστε όπως το πόσο μεγάλο είναι ένα int; 2300 01:30:35,270 --> 01:30:35,770 Βάλτε τέσσερις. 2301 01:30:35,770 --> 01:30:38,710 2302 01:30:38,710 --> 01:30:39,210 ROB: Δεξιά. 2303 01:30:39,210 --> 01:30:39,790 Davin: Ναι; 2304 01:30:39,790 --> 01:30:43,192 Φοιτητής: Έτσι, γιατί είμαστε δηλώνοντας [Δεν ακούγεται] μέσα σε μια συνάρτηση, 2305 01:30:43,192 --> 01:30:45,622 θα πρέπει να βάλουμε 3 εντός αυτής της λειτουργίας; 2306 01:30:45,622 --> 01:30:46,907 Ή μπορούμε να το χρησιμοποιήσουμε έξω; 2307 01:30:46,907 --> 01:30:48,740 Davin: Μπορείτε να το χρησιμοποιήσετε εκτός του εν λόγω λειτουργία. 2308 01:30:48,740 --> 01:30:49,890 Έτσι ζητάει δωρεάν. 2309 01:30:49,890 --> 01:30:51,700 >> Φοιτητής: Χάστε κομμάτι από όπου [δεν ακούγεται]. 2310 01:30:51,700 --> 01:30:54,720 >> ROB: Ω, το ελεύθερο δεν happen-- ότι είναι μέρος της μαγείας της malloc 2311 01:30:54,720 --> 01:30:57,220 είναι ότι δεν είστε περιορίζεται στην τοπική εμβέλεια. 2312 01:30:57,220 --> 01:31:00,700 Έχετε τον πλήρη έλεγχο πόσο καιρό μεταβλητές σας ζήσει. 2313 01:31:00,700 --> 01:31:05,380 Έτσι καλούμε malloc εδώ, θα μπορούσε είναι μια εντελώς ξεχωριστή λειτουργία. 2314 01:31:05,380 --> 01:31:08,670 Θα μπορούσε να είναι 10 ώρες αργότερα ότι μπορούμε επιτέλους να καλέσετε δωρεάν. 2315 01:31:08,670 --> 01:31:11,764 >> Davin: Έτσι, για παράδειγμα, όπως, ένα ζευγάρι εβδομάδες από τώρα, όταν τελικά 2316 01:31:11,764 --> 01:31:13,680 κάνει λεξικό ορθογράφος σας psets, θα πάμε 2317 01:31:13,680 --> 01:31:16,410 να έχουν κάποια λειτουργία που δημιουργεί τους τόνους των κόμβων. 2318 01:31:16,410 --> 01:31:18,630 Έτσι είστε mallocing τόνους κόμβων σε αυτή τη λειτουργία. 2319 01:31:18,630 --> 01:31:20,670 Και στη συνέχεια σε ένα ξεχωριστή λειτουργία, είστε 2320 01:31:20,670 --> 01:31:22,440 πρόκειται να θέλουν να ελευθερώσει όλους αυτούς τους κόμβους. 2321 01:31:22,440 --> 01:31:25,740 Έτσι, μπορείτε κυριολεκτικά να περάσει ελευθερώσει ένα δείκτη, έτσι ώστε μια διεύθυνση μνήμης 2322 01:31:25,740 --> 01:31:26,684 σε ό, τι malloced. 2323 01:31:26,684 --> 01:31:27,600 Και αυτό θα είναι μια χαρά. 2324 01:31:27,600 --> 01:31:29,725 Δεν χρειάζεται να απελευθερώσει, παρόμοια, στην ίδια λειτουργία. 2325 01:31:29,725 --> 01:31:30,449 Ναι; 2326 01:31:30,449 --> 01:31:36,197 >> Φοιτητής: Έτσι, ένα malloc μεταβλητή [δεν ακούγεται] έξω; 2327 01:31:36,197 --> 01:31:37,384 Είναι ότι αυτό που λέτε; 2328 01:31:37,384 --> 01:31:38,300 Davin: Περιμένετε, το λες αυτό; 2329 01:31:38,300 --> 01:31:38,800 Λυπάμαι. 2330 01:31:38,800 --> 01:31:42,300 >> Φοιτητής: Αν μια μεταβλητή malloc μπορεί να είναι δωρεάν σε οποιοδήποτε σημείο του κώδικα, 2331 01:31:42,300 --> 01:31:44,800 τότε μπορούν να προσπελαστούν οπουδήποτε στον κώδικα; 2332 01:31:44,800 --> 01:31:45,800 Μπορείς να τους κρατήσει τις τοπικές; 2333 01:31:45,800 --> 01:31:47,880 >> Davin: Ω, ρώτησε, όπως, η μεταβλητή, like-- 2334 01:31:47,880 --> 01:31:51,300 2335 01:31:51,300 --> 01:31:55,510 >> ROB: Έτσι θα πρέπει ακόμα να έχουν κάποιο είδος της αναφοράς 2336 01:31:55,510 --> 01:31:57,220 Για να μπλοκάρετε την malloc της μνήμης. 2337 01:31:57,220 --> 01:31:58,540 Μέχρι εδώ, γυρίζουμε x. 2338 01:31:58,540 --> 01:31:59,040 Φοιτητής: Αχ. 2339 01:31:59,040 --> 01:32:01,920 ROB: Αν δεν είχαμε επιστρέψει x εδώ, και αυτό ήταν απλώς άκυρη, 2340 01:32:01,920 --> 01:32:04,550 τότε δεν θα είχαμε πρόσβαση σε ο δείκτης που malloced, 2341 01:32:04,550 --> 01:32:05,920 και αυτό είναι που διέρρευσαν μνήμη. 2342 01:32:05,920 --> 01:32:06,690 >> Φοιτητής: Εντάξει. 2343 01:32:06,690 --> 01:32:10,010 >> Davin: Έτσι, όπως, ας πούμε ότι έχετε έχουν αυτό, όπως, ακριβώς εδώ. 2344 01:32:10,010 --> 01:32:10,510 ROB: Όχι. 2345 01:32:10,510 --> 01:32:13,430 Davin: Στην κύρια λειτουργία μου, δεν μπορώ απλά καλέστε αυτό το x και να είναι, όπως, ΟΚ, 2346 01:32:13,430 --> 01:32:14,645 σε αυτή τη λειτουργία, το έκανα αυτό. 2347 01:32:14,645 --> 01:32:14,960 >> ROB: Δεξιά. 2348 01:32:14,960 --> 01:32:17,790 >> Davin: Έτσι, Πάω να καλέσετε x στο, όπως, κύρια ή κάτι τέτοιο. 2349 01:32:17,790 --> 01:32:18,540 Δεν μπορείτε να το κάνετε αυτό. 2350 01:32:18,540 --> 01:32:19,600 Θα πάμε για να επιστρέψει κάτι. 2351 01:32:19,600 --> 01:32:21,000 Αλλά ό, τι πρόκειται να επιστρέψει; 2352 01:32:21,000 --> 01:32:22,130 Θα πάμε για να επιστρέψει μια διεύθυνση μνήμης. 2353 01:32:22,130 --> 01:32:25,130 Και επειδή μπορείτε να επιστρέψετε μια μνήμη διεύθυνση, που μπορεί να προσπελαστεί αλλού. 2354 01:32:25,130 --> 01:32:27,262 2355 01:32:27,262 --> 01:32:28,255 Οποιεσδήποτε άλλες ερωτήσεις; 2356 01:32:28,255 --> 01:32:28,755 Ναι; 2357 01:32:28,755 --> 01:32:31,213 >> Φοιτητής: Είναι το παραπάνω λειτουργία είναι επιταγή για [δεν ακούγεται]; 2358 01:32:31,213 --> 01:32:33,270 2359 01:32:33,270 --> 01:32:35,005 >> Davin: Γιατί δεν χρειάζεται να το κάνουμε αυτό; 2360 01:32:35,005 --> 01:32:35,880 Φοιτητής: [δεν ακούγεται]. 2361 01:32:35,880 --> 01:32:37,755 Davin: Επειδή είστε Δεν mallocing τίποτα. 2362 01:32:37,755 --> 01:32:39,640 Έτσι είναι not-- ναι, είναι Δεν ήθελε ένα string s. 2363 01:32:39,640 --> 01:32:41,160 Είναι ένας δείκτης κάπου. 2364 01:32:41,160 --> 01:32:42,951 Αυτά είναι απλώς αξίες. 2365 01:32:42,951 --> 01:32:43,450 Φοιτητής: Εντάξει. 2366 01:32:43,450 --> 01:32:43,949 Davin: Ναι. 2367 01:32:43,949 --> 01:32:47,600 2368 01:32:47,600 --> 01:32:48,470 Οτιδήποτε άλλο; 2369 01:32:48,470 --> 01:32:48,970 ROB: Ναι; 2370 01:32:48,970 --> 01:32:50,386 Φοιτητής: Αλλά όταν [δεν ακούγεται]; 2371 01:32:50,386 --> 01:32:55,050 2372 01:32:55,050 --> 01:32:58,690 >> ROB: Έτσι, προκειμένου να απελευθερώσει το μνήμη, θα λέγαμε εδώ. 2373 01:32:58,690 --> 01:33:01,350 Έτσι το x είναι δείκτης μας να το μπλοκ της μνήμης. 2374 01:33:01,350 --> 01:33:02,845 Έχουμε απελευθερώσει αυτού του pointer. 2375 01:33:02,845 --> 01:33:04,470 Και εμείς δεν θα το κάνουμε αναγκαστικά εδώ. 2376 01:33:04,470 --> 01:33:05,390 Μπορούμε να το κάνουμε οπουδήποτε. 2377 01:33:05,390 --> 01:33:10,400 Αλλά σας καλούν μόνο δωρεάν κάτι που malloc επιστρέφει. 2378 01:33:10,400 --> 01:33:12,940 Έτσι, malloc, εδώ, επέστρεψε αυτό που αποθηκεύονται στο X. 2379 01:33:12,940 --> 01:33:14,802 Έτσι, μπορούμε να καλέσετε δωρεάν στο x. 2380 01:33:14,802 --> 01:33:18,730 2381 01:33:18,730 --> 01:33:20,556 Όλες οι τελευταίες ερωτήσεις; 2382 01:33:20,556 --> 01:33:21,701 >> Davin: Κάποιες τελευταίες ερωτήσεις; 2383 01:33:21,701 --> 01:33:22,200 Ναι; 2384 01:33:22,200 --> 01:33:25,152 >> Φοιτητής: Συγγνώμη, μπορεί να σας εξηγήσουν εκ νέου γιατί θα απελευθερώσει εκεί; 2385 01:33:25,152 --> 01:33:26,630 Γιατί [δεν ακούγεται]; 2386 01:33:26,630 --> 01:33:27,774 >> Davin: Γιατί εδώ; 2387 01:33:27,774 --> 01:33:29,109 >> Φοιτητής: Ναι, όπως αμέσως μετά. 2388 01:33:29,109 --> 01:33:30,900 Davin: Πιθανότατα δεν θέλουν μια δωρεάν εδώ. 2389 01:33:30,900 --> 01:33:31,630 ROB: πιθανότατα δεν θα. 2390 01:33:31,630 --> 01:33:33,060 Davin: Ναι, ότι αυτό θα κάνει τίποτα. 2391 01:33:33,060 --> 01:33:35,220 Αυτό θα ήταν, όπως, τη δημιουργία μνήμη, κάνουμε πράγματα για αυτό, 2392 01:33:35,220 --> 01:33:37,390 και αμέσως μετά να ξεχάσουμε αυτό, ναι. 2393 01:33:37,390 --> 01:33:39,850 >> ROB: Αλλά θα μπορούσαμε να κάνουμε, όπως, εδώ για κάποιο λόγο. 2394 01:33:39,850 --> 01:33:43,902 Θα μπορούσαμε να πούμε int αστέρων y ισούται με συστοιχία επιστροφής. 2395 01:33:43,902 --> 01:33:47,900 Κάνετε κάποια πράγματα με y, ίσως να εκτυπώσετε τα περιεχόμενα. 2396 01:33:47,900 --> 01:33:49,350 Και τότε, επιτέλους, είμαστε γίνει. 2397 01:33:49,350 --> 01:33:50,626 Μπορούμε να ελευθερώσει y. 2398 01:33:50,626 --> 01:33:51,501 Φοιτητής: [δεν ακούγεται]. 2399 01:33:51,501 --> 01:33:57,839 2400 01:33:57,839 --> 01:33:59,005 Davin: Θα πρέπει να μετακινηθείτε προς τα κάτω; 2401 01:33:59,005 --> 01:34:00,445 Ευχαριστώ. 2402 01:34:00,445 --> 01:34:00,945 ROB: Νίκαια. 2403 01:34:00,945 --> 01:34:02,400 2404 01:34:02,400 --> 01:34:03,646 >> Davin: Εντάξει, αυτό είναι όλο. 2405 01:34:03,646 --> 01:34:04,520 ROB: Εντάξει, καλά. 2406 01:34:04,520 --> 01:34:05,070 Καλή τύχη. 2407 01:34:05,070 --> 01:34:06,800 >> Davin: Αν έχετε απορίες, επικοινωνήστε μαζί μας. 2408 01:34:06,800 --> 01:34:08,670 Καλή τύχη. 2409 01:34:08,670 --> 01:34:10,283