>> [Παίζει μουσική]
>> Davin: Εντάξει, παιδιά.
Έτσι, αυτό είναι η αναθεώρηση για το πρώτο κουίζ.
Είναι όλοι έτοιμοι για το κουίζ την Τετάρτη;
ALLISON: Woo!
ΜΑΘΗΤΗ: Woo!
Davin: Ναι.
ALLISON: Ναι!
Davin: Αυτός ο τύπος είναι έτοιμο.
Αυτός ο τύπος, δύο χέρια, ωραία.
Έτσι κουίζ επανεξέταση σήμερα, πρόκειται να είναι περίπου μία ώρα και ένα μισό.
Εμείς πάμε για να πάει πέρα ​​από όλα τα μεγάλα έννοιες που πρέπει να ξέρετε για το κουίζ.
Εμείς πάμε για να πάει πέρα ​​από κάποια κωδικοποίηση από παραδείγματα χέρι, το οποίο είναι σε κάθε κουίζ.
Και αν έχετε ερωτήσεις, μη διστάσετε να σηκώσεις το χέρι σου και τα πάντα
όπως αυτό.
Λοιπόν, σχετικά με την εφοδιαστική το κουίζ είναι online.
Έτσι θα πάμε να χωρίσει τους ανθρώπους επάνω σε διαφορετικά δωμάτια.
Είναι βασισμένο στο όνομά τους.
Έτσι, εάν έχετε οποιεσδήποτε ερωτήσεις σχετικά με το πού να πάει ή για το τι υλικό είναι, όπως,
η επίσημη λέξη για το τι συμβαίνει να είναι στο κουίζ, ελέγχει on-line.
Και αυτό είναι όλο μέχρι σήμερα.
Έτσι, εάν δεν υπάρχουν ερωτήσεις για να Κατ 'αρχάς, θα πάμε για να ξεκινήσετε.
Και εδώ είναι Allison.
>> [Χειροκροτήματα]
>> ALLISON: Εντάξει, ευχαριστώ, Rob.
Εκτιμήστε αυτό.
Davin έπρεπε να γυρίσει σε αυτό.
Αυτό είναι το μη εξαντλητικό κατάλογο των θέματα, όπως πάντα, όπως Davin είπε απλά.
Συμβουλευτείτε την τεκμηρίωση σε απευθείας σύνδεση για το κουίζ μηδέν.
Αλλά αυτό είναι αρκετά much-- είναι στην εξεταστέα ύλη
είναι ό, τι έχουμε περάσει πάνω μέχρι στιγμής.
Τα πάντα εδώ είναι δίκαιο παιχνίδι, καθώς και οτιδήποτε άλλο
ότι μπορεί να έχουν αναφερθεί σε διάλεξη.
>> Το τμήμα μου, εδώ, είναι απλά πολλή κριτική.
Υπάρχουν ένα-δύο ασκήσεις ότι εσείς θα μπορούσε να λειτουργήσει σε.
Αλλά για το μεγαλύτερο μέρος, πραγματικά θέλουν να πάρουν στο Davin με εκείνα κωδικό
με ασκήσεις χεριών.
>> Έτσι, εγώ είμαι πρόκειται να πετάξει μέσα από αυτό.
Εάν έχετε οποιεσδήποτε ερωτήσεις, να με σταματήσει.
Σηκώστε το χέρι σας.
Υπόσχομαι ότι θα σας δούμε κατά πάσα πιθανότητα.
Αν όχι, απλά το κύμα γύρω.
Πάω να μιλάει γρήγορα.
Ελπίζω ότι ο καθένας είναι εντάξει με αυτό.
>> Εντάξει, ειδική λέξη, Davin προφανώς ξέχασε να ξεφυλλίσετε τις διαφάνειες.
[Γέλια] Είσαι σε μπελάδες, ο άνθρωπος.
Έτσι, συμβουλές για το κουίζ μηδέν, πρακτική κωδικοποίησης σε χαρτί.
Οι Εσείς πρόκειται να πάρετε κάποια πρακτική με εκείνη τώρα με Davin,
έτσι δεν θα είστε εντελώς μόνοι σας.
Νομίζω ότι είμαστε στην πραγματικότητα θα μέσω αυτών των δύο λειτουργίες.
Έτσι, θα είστε καλά προετοιμασμένοι εκεί.
>> Να είστε εξοικειωμένοι με το πρόβλημα σύνολα σας.
Υπήρξαν ερωτήσεις στις προηγούμενες κουίζ
ότι θα ζητήσει, για παράδειγμα, να κωδικοποιήσει κάτι πολύ παρόμοια με Mario.
Έτσι, είναι πολύ εξοικειωμένοι με το πρόβλημά σας θέτει, καθώς και
ως τις ερωτήσεις σας ζητάμε στην αρχή στο έντυπο
ότι μπορείτε να συμπληρώσετε, θα σας εξυπηρετήσει πολύ καλά.
>> Κάνετε μια προηγούμενη κουίζ κάτω οι χρονικοί περιορισμοί.
Αυτά τα κουίζ είναι μακρά.
Ο χρόνος περνά πολύ γρήγορα.
Και συχνά, δεν συνειδητοποιούν πόσο γρήγορα θα πάει μέχρι να πραγματικά
θέσει τον εαυτό σας στο πλαίσιο αυτών των περιορισμών.
Έτσι, αν μπορείτε απλά να χαράξει, ξέρετε, 75 λεπτών, είτε απόψε είτε αύριο
να πάρει ένα από αυτά τα κουίζ κάτω ότι, θα είναι σε πολύ καλύτερη κατάσταση.
>> Και, επίσης, τη δημιουργία φύλλων αναφοράς σας.
Θυμηθείτε, μπορείτε να πάρετε ένα μπροστινή σελίδα και πίσω
ως σημείο αναφοράς για το κουίζ σας την Τετάρτη.
Δημιουργία ότι είναι ένας πολύ καλός τρόπος για να σπουδάσουν.
Οτιδήποτε έχετε πρόβλημα με θέλετε να συμπεριλάβετε εκεί.
Οτιδήποτε TFs σας έχουν, όπως, αυτό είναι πραγματικά σημαντικό.
Θα πρέπει να το γνωρίζουν αυτό, είναι ίσως τα πράγματα που έχετε εκεί
αν δεν έχετε τα απομνημονεύσει.
Ακόμα κι αν δεν τους ξέρουν πραγματικά καλά, μερικές φορές έχει εκεί
είναι ακριβώς το είδος της άνεσης για σας, το οποίο γνωρίζω κουίζ είναι αγχωτικό.
Έτσι κάθε άνεση που μπορείτε να πάρετε μπορεί να βοηθήσει.
Εντάξει, επίσης, να πάρετε τον ύπνο και τρώνε και σαν μια κανονική πράγματα
ότι μπορούμε να σας πω για κουίζ.
>> Έτσι, ξεκινώντας εύκολο, τύπους δεδομένων και μεγέθη.
Όπως είπα, αυτό ακριβώς συμβαίνει να μου ρίχνουν πολλά πράγματα
εδώ ότι θα πρέπει να γνωρίζετε.
Έτσι έχουμε χαρακτήρες μας που είναι ένα byte, ints
που είναι τέσσερις ψηφιολέξεις, μακρύ καιρό, τα οποία είναι οκτώ bytes.
Βασικά, αυτό είναι μόνο η δική σας θέλουν να έχουν μεγαλύτερες ακέραιοι.
Πλωτήρες, οι οποίες είναι τέσσερις, δίκλινα, που είναι οκτώ.
Και πάλι, δίνει λίγο περισσότερα χώρος για πλωτήρες σας.
Και στη συνέχεια, πληκτρολογήστε αστέρων, έτσι ώστε κάθε δείκτη σε μια μηχανή 32-bit,
που είναι όλοι εσείς χρειάζεστε να γνωρίζουν, είναι τέσσερα byte.
>> Έτσι, όλα τα πράγματα που πρέπει να ξέρω, ίσως τα πράγματα
θέλετε να έχετε στο φύλλο αναφοράς σας.
Εντάξει, δυαδική μετατροπή σε δυαδικό, μετατροπή
σε δεκαεξαδικό, εμπρός και πίσω, όλα τα πράγματα που πρέπει να ξέρετε.
Έτσι, από δυαδικό σε δεκαδικό.
Εσείς θέλετε να πάρετε μια γρήγορη λεπτό και να προσπαθήσουμε και να καταλάβω το καθένα από αυτά
και στη συνέχεια να μου πείτε ποια είναι αυτά;
>> Έχω, επίσης, καραμέλα στην τσάντα μου, έτσι ώστε ο καθένας ο οποίος απαντά παίρνει καραμέλα, από τον τρόπο.
Και έχω πολλά από αυτό.
Επιτρέψτε μου να αρπάξει αυτό.
Πάω να δώσει αυτό να Gabe.
Έτσι, μπορείτε να το χέρι έξω καραμέλα σε όποιος είναι ωραίο και συνεταιρισμού.
>> Εντάξει, είδα ένα χέρι εκεί στο πίσω μέρος.
>> Φοιτητής: Ναι, η πρώτη είναι 42.
>> ALLISON: Ναι, πρώτα το ένα είναι 42, σωστά.
Φοιτητής: [δεν ακούγεται].
[Γέλια]
ALLISON: Δεύτερη μία, εκεί πίσω στο κίτρινο;
Φοιτητής: 110010.
ALLISON: Σωστά, και αυτό τελευταία, εδώ κάτω στο κάτω μέρος;
Επίσης, ναι, ξέρετε θέλετε;
Απλά πετάξτε έξω καραμέλα.
Πόσο περίπου καραμέλα για όλους;
>> Φοιτητής: [δεν ακούγεται] όταν τελειώσετε.
>> ALLISON: Σσσς.
Και στη συνέχεια η τελευταία.
Ποιος θέλει να απαντήσει;
Ακριβώς εκεί.
>> Φοιτητής: 11100.
>> ALLISON: 11100, κοίτα.
Συγχαρητήρια, καλή δουλειά, ο καθένας.
Εντάξει, ο καθένας το είδος των κατανοήσουν η διαδικασία για να γίνει αυτό;
Έχετε, πηγαίνει από το δυαδικό στο δεκαδικό ο τρόπος που έχω την τάση να το κάνει, γράφει έξω
οι δυνάμεις του 2.
Έτσι λέω, εντάξει, 0 φορές 2-0, έτσι ότι είναι 0, 1 2 φορές με το πρώτο,
είναι 2 πηγαίνει μετά με αυτόν τον τρόπο.
Υπάρχει κάποιος που θέλεις να ρητώς πάει μέσα από ένα παράδειγμα της δυαδικής;
Εντάξει, δροσερό.
>> Δεκαδικό σε δυαδική είναι πολύ παρόμοια.
Τείνω να γράψουν τις δυνάμεις του 2.
Ξεκινήστε με το ένα που είναι η μεγαλύτερη, αλλά δεν πάει παρελθόν το δεκαδικό
ότι ψάχνετε.
Και στη συνέχεια το είδος του έργο το δρόμο σας πίσω πρόσθεση πράγματα όπως είναι απαραίτητο.
>> Και στη συνέχεια με την προσθήκη, είναι ακριβώς όπως το κανονικό προσθήκη.
Αν έχετε ποτέ την περίπτωση που είστε προσθέτοντας δύο 1s, καθίσταται προφανές 2.
2 στο δυαδικό είναι τώρα 1 0 έτσι πρέπει να φέρει σας 1 στην επόμενη στήλη.
Cool.
>> Δεκαεξαδικό, αυτό θα μπορούσε να είναι κάτι ότι είναι ελαφρώς λιγότερο εξοικειωμένοι.
Έτσι, όπως ο Rob ήταν απλά μου έλεγε εκ των προτέρων, το τέχνασμα του γι 'αυτό
είναι να χωριστεί ακριβώς επάνω σε τέσσερα κομμάτια byte, εντάξει;
Bits, συγγνώμη.
Βλέπε;
Χάρη Rob.
Αυτός είναι ο λόγος που είστε εδώ. [NOISE] Εντάξει, γι 'αυτό ακριβώς το σπάσει επάνω
σε τέσσερα δυαδικά ψηφία κομμάτια.
Έτσι, με εκτελέσιμα σε δεκαεξαδικό, κοιτάμε το πρώτο 4,
η οποία είναι αν έχουμε τέσσερις 1s σε μια σειρά, τι αριθμό έχει ότι συμβολίζουν;
>> ΜΑΘΗΤΗ: ΣΤ
>> ALLISON: Έτσι, στην περίπτωση αυτή, τι είναι 11111111 or-- ναι;
Φοιτητής: FF.
ALLISON: Τέλεια, FF.
Τόσο μεγάλη, καραμέλα για εσάς.
Τώρα, για το πώς δεκαεξαδικό σε δυαδικό, εμείς απλά σκεφτείτε το είδος της σε αντίστροφη.
Για κάθε αριθμό ή γράμμα που έχουμε σε δεκαεξαδική μας,
απλά να το μετατρέψετε σε τέσσερις κομμάτι της [Γελάει] με τη μετατροπή των τεσσάρων δυαδικών του.
Έτσι, 5, σε αυτή την περίπτωση, αυτό που είναι 5 αν είμαστε αυτό που αντιπροσωπεύει με τέσσερα κομμάτια;
>> Φοιτητής: 010;
MM-HM.
Και τότε το Α, η οποία είναι στην πραγματικότητα 10, θα ήταν;
1010.
Έτσι έχουμε ότι, εδώ.
Έτσι μετατροπή μεταξύ δεκαεξαδικό και δυαδική δεν είναι πραγματικά τόσο άσχημα.
Αν κοιτάξετε σε τέσσερα bit κομμάτια, πρόκειται να είναι χρυσή.
Everyone-- ναι;
>> ROB: Αυτό είναι ανόητο, αλλά θυμάμαι πάντα
Α, δεδομένου του Α υποτίθεται ότι είναι 10.
Και δυαδικό είναι μόνο 10 10, so--
>> ALLISON: Αχ, εκεί θα πάμε.
>> ROB: Γεια σου.
>> ALLISON: Γεια σου, καραμέλα για τον Rob.
Υπάρχει πράγματα μη-σοκολάτα εκεί.
Έτσι, μπορείτε να έχετε κάποια.
Έτσι ASCII μαθηματικά.
Συμπεριφερθείτε.
Έτσι ASCII μαθηματικά, όπως εσείς ίσως και να θυμάστε
p που 2 με Visioneer και Καίσαρα, που έκανε πολλή αυτό.
Θυμηθείτε, οι χαρακτήρες είναι ουσιαστικά μόνο αριθμούς.
Έτσι, μπορούμε να κάνουμε μαθηματικά με αυτά, όπως ακριβώς κάνουμε μαθηματικά με ints.
>> Έτσι έχουμε λίγο απλό πράγμα εδώ.
Έχουμε κάποια στο Α που είναι αρχικοποιείται σε 65.
Και Β ίση με την τιμή ASCII του Α συν 1, char C ίσο με D μείον 1,
και χαρα D ίσο με 68.
Μέχρι τότε θα πρόκειται για εκτύπωση όλα αυτά, όπως βλέπουμε εδώ.
Και μπορεί κανείς να μου πει τι αυτό θα εκτυπώσετε;
Φοιτητής: [δεν ακούγεται].
ALLISON: Ακριβώς, έτσι ένα πράγμα που πρέπει να παρατηρήσετε είναι
ότι είμαστε εκτύπωση χαρακτήρες κάθε φορά, εδώ.
Είμαστε ορισμό παρόλο Α και Β είναι ints όταν τους ανακοινώνονται ανωτέρω.
Είμαστε αυτά εκτυπώνονται σαν χαρακτήρες από το ποσοστό C και δήλωση printf μας,
έτσι θα τυπώνει όλα ως χαρακτήρες.
Και φυσικά, η τιμή ASCII 65 βούλησης εκτύπωση ως A. Η τιμή ASCII του Α συν 1
θα είναι 66, η οποία θα περήφανοι για Β Έτσι, στην πραγματικότητα, εμείς
πάρετε Α Β Γ Δ καθένας καλό εκεί;
Οποιεσδήποτε ερωτήσεις;
Awesome.
>> Εντάξει, το πεδίο εφαρμογής.
Έτσι, το πεδίο εφαρμογής είναι προφανώς ένα πολύ σημαντικό πράγμα που πρέπει να κατανοήσουμε, εδώ.
Πολλοί από εσάς, αν έχουν σύνταξη λάθη,
και λέει ότι δεν έχετε πρόσβαση σε κάποια μεταβλητή,
είναι πιθανώς επειδή σας ορίζεται εντός ενός βρόχου
και στη συνέχεια προσπάθησε να αποκτήσετε πρόσβαση έξω από αυτό, ή το αντίστροφο.
>> Έτσι πεδίο στον πυρήνα της, καθορίζει ακριβώς όπου
λέμε μια μεταβλητή υπάρχει, όπου μπορεί να το αλλάξει, όπου μπορούν να έχουν πρόσβαση.
Είναι ακριβώς το είδος του λέγοντας ότι αυτά είναι τα μόνα μέρη όπου έχετε πρόσβαση
σε αυτή τη μεταβλητή.
>> Έτσι, τα δύο πεδία για τα οποία μιλάμε κατά τη διάρκεια της κατηγορίας είναι παγκόσμιο και τοπικό.
Έτσι παγκόσμιες μεταβλητές μιλάμε για όταν αυτά καθορίζουν πάνω από την κύρια.
Αυτό σημαίνει ότι ολόκληρη η σας το πρόγραμμα έχει πρόσβαση σε αυτό,
και υπάρχει για όσο χρονικό διάστημα καθώς τρέχει το πρόγραμμα, εντάξει;
Τοπικές σημαίνει ότι είναι περισσότερο περιορίζονται σε μια περιοχή.
Έτσι, κάθε φορά που έχουν ειδικές λειτουργίες όπως swap, μιλάμε πάντα για.
Πάντα μιλάμε για το swap με την Α και Β Α και Β υπάρχουν μέσα σε αυτή την λειτουργία.
Δεν υπάρχουν πουθενά αλλού.
>> Όπως επίσης, όταν έχετε αν δηλώσεις ή για βρόχους.
Όποτε έχουμε, για παράδειγμα, σε ένα για το βρόχο έχουμε int i ισούται με 0.
Έχουμε κάποια κατάσταση και εμείς να το ενημερώσετε.
Υπάρχει μόνον εντός της τιράντες του ότι για βρόχο.
Αν προσπαθήσετε να αποκτήσετε πρόσβαση αλλού, compiler σας θα φωνάζω σε σας.
Θα ήθελα να είναι σαν, τι προσπαθείτε να κάνετε;
Αυτό δεν υπάρχει.
Έτσι, αυτό είναι το δύο διαφορετικοί τύποι του πεδίου εφαρμογής.
Μήπως αυτό έχει νόημα για όλους;
>> Έτσι, για παράδειγμα εδώ, αυτό είναι μερικά μόνο από απλό πρόγραμμα.
Τι πιστεύετε εσείς είναι πρόκειται να συμβεί σε κάθε σημείο
ότι προσπαθούμε να εκτυπώσετε;
Έτσι, αυτό το ένα εδώ, τι πρόκειται να συμβεί;
Φοιτητής: Θα εκτυπώσει τρεις.
ALLISON: Δεξιά.
Θα εκτυπώσετε τρεις.
Τι γίνεται εδώ;
Φοιτητής: Δεν θα λειτουργήσει.
ALLISON: Δεν θα λειτουργήσει.
Είσαι έξω από το πεδίο εφαρμογής, σωστά;
Τοπική μεταβλητή δεν υπάρχει έξω από αυτά τα σιδεράκια, εντάξει;
Και τότε τι γίνεται εδώ;
>> Φοιτητής: [δεν ακούγεται].
>> ALLISON: Τι;
Rob, πάμε.
>> ROB: μόλις είπα.
Παγκόσμια μεταβλητές πρέπει να είναι παγκόσμια μεταβλητή υπογράμμισης.
>> ALLISON: Αχ, ναι, συγγνώμη.
Ευχαριστώ, Rob.
Του Rob σαν κάτοικος compiler μας.
Αυτός θα φωνάζω μόνο σε εμάς, όταν εμείς χρειάζονται. [Γελάει] Ναι, ότι
θα πρέπει να είναι καθολική μεταβλητή υπογράμμισης.
Έτσι, αν υποτεθεί ότι ήταν παγκόσμια υπογράμμισης
μεταβλητή, τι πρόκειται να συμβεί εδώ;
Φοιτητής: Αυτό θα λειτουργήσει.
ALLISON: Θα λειτουργήσει.
Έτσι θα εκτυπώσετε, έτσι απλά ένα πολύ απλό παράδειγμα.
ΟΚ, πρωτότυπα.
Έτσι, προφανώς, είμαστε πραγματικά τονίζουν για σας παιδιά
για να κάνει τις λειτουργίες εάν νόημα στα προγράμματά σας.
Αλλά φυσικά, όταν κάνουν τη δική σας λειτουργίες,
συνήθως θα τους καθορίσει μετά από κύριο.
Και θα προσπαθήσουμε να τους καλέσει σε κύρια.
Και αν δεν θέλετε να χρησιμοποιήσετε ένα πρωτότυπο, compiler σας θα φωνάζω σε σας.
>> Πρωτότυπο είναι βασικά απλά λέει compiler σας
ότι έχω αυτή τη λειτουργία κάτω από τον κύριο.
Πάω να το ονομάσουμε πριν την ορίζουν.
Απλά κρατήστε την.
Υπόσχομαι ότι έχει οριστεί, και σας θα έχει όλα όσα χρειάζεστε.
>> Έτσι, ο τρόπος που το κάνουμε είναι απλά επιστροφή σας τύπο, το όνομα σας λειτουργία, είσοδος σας
λίστα.
Είναι ουσιαστικά η πρώτη γραμμή της δήλωσης λειτουργία σας.
Είναι πραγματικά όλα είναι.
Αλλά αυτό είναι μόνο ένα γενικά το είδος της μορφής.
>> Έτσι, στο παράδειγμα μας εδώ, οποία εσείς πρέπει να
έχουν δει στο τμήμα σε κάποιο σημείο, έχουμε
κάποια κύβος int ότι παίρνει κάποια int της εισόδου.
Και έχουμε κύρια μας λειτουργίας, η οποία καλεί κύβο.
Και κύβος ορίζεται μετά από το γεγονός.
>> Έτσι, αν δεν είχαμε εισόδου int κύβος στην κορυφή, όταν καλέσαμε κύβος
στο κύριο, compiler μας θα πάρει τρελλός σε μας.
Θα ήθελα να είναι σαν, τι είναι αυτά που λες;
Cube δεν υπάρχει.
Δεν ξέρω τι ζητάτε.
Και είμαι απλώς πρόκειται στάση.
>> Αλλά επειδή κάναμε πρωτότυπο μας στην κορυφή, έχουμε πει,
Ξέρετε, όταν βλέπετε κύβος, μην ανησυχείτε γι 'αυτό.
Υπόσχομαι ότι έχει οριστεί αργότερα.
Και αυτό θα σας αφήσει να κάνετε ό, τι θέλετε.
Έτσι, αν έχετε ποτέ μια λειτουργία που έχει δηλωθεί μετά το ονομάζετε
για πρώτη φορά, θα πρέπει να έχουν το prototyped στην κορυφή.
>> Ναι;
>> ROB: Είναι τετράγωνο, δεν cubing.
>> ALLISON: Θεέ μου.
Δεν είχα have-- Gabe, σκέφτηκα θα ήταν διορθωτής μας.
Εντάξει ρε παιδιά, να φέρει μαζί μου, εδώ.
Ελπίζω ότι ο καθένας παίρνει την ιδέα.
Εντάξει, έτσι αυτό θα πρέπει να έχουν έχουν τετράγωνο, όχι κομμένο σε κύβους.
Αλλά η ιδέα παραμένει η ίδια.
Κάθε λειτουργία που εμείς την αποκαλούμε μετά το γεγονός θα πρέπει να έχει ένα πρωτότυπο.
Όλοι καλό με αυτό;
Οποιαδήποτε άλλα λάθη;
ΟΚ.
Τυχόν λάθη εδώ πριν αρχίσουμε, Rob;
[Γέλια] Εντάξει, έτσι structs.
Βασικά, structs σας επιτρέπουν για να δημιουργήσετε το δικό σας τύπο δεδομένων.
Τόσο πολύ σαν int ή char ή ένα πλωτήρα, είναι ακριβώς ένας άλλος τύπος.
Μου αρέσει να σκέφτομαι όπως, όπως, δημιουργήσετε το δικό σας τύπο δεδομένων.
Έτσι θα επιτρέπει να το κάνουμε αυτό.
Και κατέχει διαφορετικούς τύπους δεδομένων.
>> Έτσι, αν θυμάστε, σε μια σειρά, θα μπορεί να κρατήσει μόνο τα πράγματα παρόμοιου τύπου.
Structs μας επιτρέπουν να κατέχουν πολλαπλές πράγματα διαφορετικών τύπων.
Έτσι, σε αυτή την περίπτωση εδώ, εμείς έχουν ένα struct που ονομάζεται Student,
ονομάζεται εδώ στο κάτω μέρος.
Και έχουμε κάποια id int και μερικοί όνομα συμβολοσειράς.
Έτσι, αυτό είναι απλά ένας άλλος τύπος δεδομένων.
Έχουμε τώρα έναν τύπο δεδομένων που ονομάζεται Student.
>> Έτσι, γιατί μπορούμε να σκεφτούμε ως απλά έναν άλλο τύπο δεδομένων,
μπορούμε να δηλώσουμε μεταβλητές όπως θα κάνατε με οποιοδήποτε άλλο.
Έτσι, αντί να έχουμε, όπως, ένα int φοιτητής, έχουμε μόνο έναν μαθητή,
φοιτητής 1.
Ω, κοιτάξτε.
Είναι Rob.
Έτσι, εδώ είμαστε δηλώνοντας ένα struct, ή μια μεταβλητή
ονομάζεται φοιτητής 1 του μαθητή τύπου.
Έτσι, πρόκειται να έχετε ένα αναγνωριστικό και το όνομα που συνδέονται με αυτό.
>> Και ο τρόπος που έχουν πρόσβαση σε αυτά στοιχεία μέσα struct μας
είναι με το χειριστή τελεία, εδώ.
Έτσι, σε αυτή την περίπτωση, έχουμε δηλωθεί κάποια φοιτητής 1.
Εμείς ανατεθεί το αναγνωριστικό για να είναι 1.
Και εμείς ανατεθεί το όνομα να είναι ο Rob.
Εντάξει, ο καθένας καλό με αυτό;
Χρησιμοποιήστε το like-- απλά ναι;
>> Φοιτητής: Ναι, όταν typedef-- χρειαζόμαστε να χρησιμοποιήσετε typedef;
>> ALLISON: Έτσι ακριβώς typedef λέει that-- Rob, μπορείτε
μπορεί να με διορθώσει σε αυτό, αν είμαι wrong-- αλλά είναι typedef ακριβώς πραγματικά δηλώνοντας
ως ένα είδος που μπορείτε να χρησιμοποιήσετε, σωστά;
>> ROB: Ναι, είναι βασικά, έτσι είναι ακριβώς η δημιουργία
ένα ψευδώνυμο ή ένα ψευδώνυμο για έναν τύπο.
Έτσι, μπορείτε να γράψετε ότι [δεν ακούγεται].
Έτσι, [δεν ακούγεται] υπάρχει, και τώρα έχουμε μόνο
[Δεν ακούγεται] μέσα ακριβώς το ίδιο πράγμα.
Και έτσι εδώ, είμαστε δακτυλογραφημένες, νομίζω, κάποια struct τύπου 2 [δεν ακούγεται].
Έτσι είναι μόνο ένα ψευδώνυμο για ένα δεδομένο τύπο.
>> ΜΑΘΗΤΗ: String [δεν ακούγεται] βιβλιοθήκη δακτυλογραφήθηκε σαν char αστέρων.
>> ALLISON: Για τους σκοπούς μας εδώ, εάν είστε με την οποία μια struct,
ακριβώς κάνει typedef struct.
Εντάξει, τόσο εκ των προτέρων, αυτό είναι απλά μια κανονική μεταβλητή εδώ.
Έχουμε πρόσβαση σε αυτό με μια τελεία.
αν έχουμε ένα δείκτη για να ένα struct, μπορούμε πραγματικά
χρησιμοποιήστε ένα βέλος, το οποίο είναι αρκετά δροσερό.
>> Έτσι, σε αυτή την περίπτωση, έχουμε ένα δείκτη για να ένας φοιτητής 1 που είναι φοιτητής τύπου.
Θυμηθείτε, με τη δική σας κατασκευή του δείκτη,
θέλετε ό, τι πληκτρολογείτε το δείκτη σας δείχνει να είναι στην αρχή.
Έτσι έχουμε κάποιο μαθητή 1, εδώ.
Και επειδή αυτός ο μαθητής 1 είναι τώρα ένα μυτερό,
μπορούμε να πάμε πραγματικά φοιτητής όνομα 1 βέλος αντί για τελεία, γιατί είναι ένας δείκτης,
και να ορίσετε τον Rob.
Και τώρα, αν θέλουμε να αλλάξετε τον Rob να Davin,
Αυτό είναι απλά δείχνοντάς σας ένας διαφορετικός τρόπος για να το κάνουμε.
>> Έτσι, αντί της χρησιμοποιώντας το βέλος, μπορείτε μπορεί also-- Θα τελειώσω αυτό και, στη συνέχεια,
λάβει ότι question-- θα μπορούσατε Επίσης, κάνει φοιτητής αναφοράς 1.
Αυτό λέει, όπως πάει να ό, τι είναι στο μαθητή 1, η οποία
θα ήταν φοιτητής struct μας.
Δείτε το με μια τελεία και το στοιχείο ότι θέλετε, και στη συνέχεια να εκχωρήσετε εκ νέου.
Υπήρχε ένα ερώτημα.
Φοιτητής: Ναι, ναι, πώς έρχονται έχετε να χρησιμοποιήσει [δεν ακούγεται] όταν είστε
κάνει αστέρων φοιτητής χωρίς [Δεν ακούγεται] φοιτητή;
ALLISON: Επειδή αυτό είναι η δημιουργία ενός δείκτη.
ROB: Εμείς πάμε να μιλήσουμε γι 'αυτό.
ALLISON: Εμείς πάμε να μιλήσουμε γι 'αυτό αργότερα στην αναθεώρηση.
Έτσι απλά να κρατήσουν αυτή τη σκέψη.
Αν εξακολουθεί να σας ενοχλεί το τέλος, έρχονται να μιλήσετε με έναν από εμάς.
>> Έτσι, αυτοί κάνουν ακριβώς το ίδιο πράγμα.
Είμαστε ακριβώς σας δείχνει δύο διαφορετικούς τρόπους για να το κάνει.
Φοιτητής 1 είναι τώρα ένας δείκτης, τόσο μπορείτε να αποκτήσετε πρόσβαση στο στοιχείο Όνομα
εντός του struct με ένα βέλος.
Ή μπορείτε να dereference δείκτη σας, και τότε πρόσβαση, όπως θα κάνατε κανονικά.
Μήπως αυτό έχει νόημα σε κάθε μία;
Αν το σύνολο δείκτη πράγματα είναι λίγο σύγχυση, Gabe θα μιλήσουμε γι 'αυτό,
και τότε ίσως αυτό θα έχει περισσότερο νόημα.
Ναι;
>> Φοιτητής: Ναι, ναι, πώς είναι Αυτό διαφέρει από το;
ALLISON: Η προηγούμενη;
Έτσι, ο φοιτητής 1 σε αυτό περίπτωση δεν είναι ένας δείκτης.
Είναι απλά πραγματική struct σας.
>> Φοιτητής: Εντάξει.
>> ALLISON: Ενώ αυτό είναι ένας δείκτης σε μια struct.
>> Φοιτητής: Εντάξει, αλλά το κάνει το είδος του καταλήγουν να εργάζονται το ίδιο [δεν ακούγεται].
>> ALLISON: Λειτουργεί αποτελεσματικά η ίδια.
Σύνταξη σας είναι απλά διαφορετική.
Φοιτητής: Εντάξει.
>> ALLISON: Ναι, είναι ουσιαστικά η ίδια.
Είναι ακριβώς ανάλογα με τα συμφραζόμενα, μπορεί να θέλετε ένα πάνω στο άλλο.
Ναι;
>> Φοιτητής: Όταν το κάνετε αναφορές με την 1--
ALLISON: MM-hm;
Φοιτητής: Γιατί το κάνετε έχουν τις παρενθέσεις;
ALLISON: Επειδή φοιτητής 1 είναι ο δείκτης.
Έτσι, θα πρέπει να βεβαιωθείτε ότι είστε απλά εύρεση τιμών του δείκτη.
>> Φοιτητής: Εντάξει.
>> ALLISON: Έτσι σε αυτήν την περίπτωση εδώ, οι παρενθέσεις γύρω από αυτό
σημαίνει ότι είστε εύρεση τιμών φοιτητής 1.
Έτσι θα πάμε εκεί φοιτητή 1 σημεία, τα οποία είναι struct σας.
Έτσι τώρα μπορείτε να σκεφτείτε από αυτό ως το struct,
έτσι μπορούμε να χρησιμοποιήσουμε την κανονική λειτουργία τελεία μας.
Οποιεσδήποτε άλλες ερωτήσεις;
Cool, φοβερό.
>> Έτσι τελευταίο πράγμα, νομίζω είναι η τελευταία μου διαφάνεια, Woo!
Εντάξει, έτσι κινητής υποδιαστολής ανακρίβεια.
Μιλήσαμε εν συντομία για αυτό κατά τη διάρκεια της διάλεξης.
Βασικά, έχουμε απείρως πολλοί πραγματικοί αριθμοί.
Και αν κάποιος από εσάς παιδιά αγαπούν τα μαθηματικά, υπάρχει
όλα τα είδη των δροσερά πράγματα μαζί μας.
>> Αλλά υπάρχουν απείρως πολλοί πραγματικοί αριθμοί.
Αλλά είναι μόνο πεπερασμένο πολλά κομμάτια που έχουμε.
Έτσι είστε πάντα πρόκειται να έχουν ανακρίβεια, είναι όλα.
Και αυτό είναι ότι είναι ακριβώς το είδος του σαν κάτι που πρέπει να γνωρίζετε.
Αυτό, όπως μπορούμε να σας ρωτήσω γιατί το κάνει κινητής υποδιαστολής ανακρίβεια υπάρχουν;
Έτσι απλά κάτι που πρέπει να γνωρίζετε.
Και με αυτό, είμαι στροφή το πάνω σε Δείκτες.
>> Binky: Γεια σας, παιδιά.
Binky όνομά μου.
Πάω να μιλήσω για τους δείκτες.
Ναι, έτσι είναι πραγματικά δείκτες το αγαπημένο μου μέρος σε αυτό το μάθημα.
Έτσι απλά για να καταστήσει σαφές ό, τι Allison μιλούσε για εδώ, έτσι ώστε ο λόγος
why-- τη μόνη διαφορά εδώ, η μεγάλη διαφορά ήταν ο τρόπος
δηλώνουμε τα πράγματα.
Έτσι αστέρων φοιτητής σημαίνει αυτό είναι ένας δείκτης σε ένα μαθητή.
Ότι η διαφάνεια πριν, μαθητής είναι ένας πραγματική struct, σαν ένα πραγματικό φοιτητή,
που περιέχουν οποιαδήποτε από αυτά τα πράγματα.
>> Και ο λόγος για τον οποίο θέλουν to-- ναι, Davin;
>> Davin: Τι σημαίνει το βέλος σημαίνει;
>> Binky: Τα μέσα βέλος ακριβώς το ίδιο με αυτό.
Έτσι, δεν χρειάζεται πραγματικά το βέλος.
Όπως, εάν είστε μόνο πρόγραμμα σε C, μπορείτε να χρησιμοποιήσετε ακριβώς αυτό.
Συγγνώμη, εγώ δεν κάνω αυτό που είναι.
Μπορείτε να χρησιμοποιήσετε μόνο αυτό σύνταξη.
>> Αλλά μερικοί άνθρωποι, όταν είχαν σχεδιασμό C,
κατάλαβα ότι οι άνθρωποι χρησιμοποίησε τη σύνταξη τόσο πολύ,
ότι θα ήθελα απλώς καταλήξει με μια δομή σύνταξη για αυτό.
Και αυτό έγινε σε η μορφή αυτού του βέλους.
Και είναι πραγματικά ωραίο, γιατί συμβολίζει κάτι
σαν να είμαστε στην πραγματικότητα μετά από Αυτό το βέλος, αυτό το δείκτη,
προς κάποιο χώρο στη μνήμη.
Και όταν φτάσουμε εκεί, θέλουμε να να κοιτάξουμε προς το όνομα του εν λόγω μαθητή,
αν αυτό έχει νόημα.
Εντάξει;
>> Έτσι, αυτό είναι ακριβώς το ίδιο.
Αυτό είναι ακριβώς το ίδιο πράγμα με αυτό.
Παίρνουν καταρτίζονται ακριβώς το ίδιο, εντάξει;
Και ο λόγος εδώ γιατί malloc κάτι, επειδή σε αυτή την περίπτωση,
μεταβλητή μας είναι στην πραγματικότητα απλά μια μεταβλητή δείκτη.
Έτσι έχουμε μόνο κάποιο διάστημα σε μνήμη που κρατά ένα δείκτη.
Δεν έχουμε πραγματικά κανένα χώρο ότι κατέχει την πραγματική struct.
>> Έτσι, αυτό πρέπει να γίνει σε δύο στάδια.
Πρέπει να δημιουργήσουμε το μνήμη για να θέσει το struct in.
Και εμείς πρέπει να δημιουργήσουμε το μνήμη για να θέσει το δείκτη στο.
Έτσι, βασικά είναι δύο διαφορετικές μεταβλητές, εδώ.
Ένας από αυτούς είναι φοιτητής τύπου, εκτός του ότι δεν έχει πραγματικά ένα όνομα.
Και το άλλο είναι του τύπου αστέρι μαθητή.
Και τότε φοιτητής 1 σημεία εκεί, αν αυτό το νόημα.
Εντάξει;
>> Έτσι, ο λόγος που χρησιμοποιούμε pointers είναι επειδή τα πάντα
σε έναν υπολογιστή, κάθε μεταβλητή σε έναν υπολογιστή έχει δύο πράγματα.
Έχει την αξία του.
Και αυτό έχει τη διεύθυνσή της.
Και ένας καλός τρόπος για να αντιλαμβάνονται αυτό είναι ότι υπάρχει
πολλά προβλήματα όταν προσπαθήστε να χρησιμοποιήσετε τις λειτουργίες.
Και θα πάμε να προσπαθήσουμε να εξετάσουμε σε ένα από αυτά.
Δηλαδή, πρόκειται να σκεφτείτε μνήμη ως κουτιά.
>> Μπορείτε πάντα πίστευα των μεταβλητών όταν λέτε na ισούται με 5.
Έχετε σκεφτεί βάζοντας 5 σε ένα κουτί.
Έτσι, ό, τι και αν θέλετε να περάσετε ότι int σε μια συνάρτηση;
Απλά pass-- εγώ δεν κάνω know-- x σε λειτουργία.
Αλλά αυτό που συμβαίνει είναι συνήθως ως άνθρωποι, μπορείτε
θα σκεφτούμε κάτι σαν να είμαι περνώντας το κουτί σε ένα πρόσωπο.
Και δεν το κάνει πραγματικά συμβεί σε υπολογιστές.
Αυτό που συμβαίνει είναι ότι μπορείτε να αντιγράψετε την τιμή από το κουτί στο κουτί του ατόμου.
>> Έτσι, αυτό που προσπαθώ να πω είναι ότι εάν έχετε ένα function-- sorry-- εδώ,
αν έχουμε μια συνάρτηση όπως σε πέντε έως εκεί, αν προσπαθήσετε να περάσει μια μεταβλητή,
είναι ακριβώς πρόκειται να αντιγράψετε.
Εάν ένα nx εκκινήσεως ισούται με 3, πρόκειται για να αντιγράψετε αυτήν την τιμή μέχρι την μεταβλητή a
μέχρι εκεί.
Εντάξει, και αυτό είναι το είδος του λόγου γιατί θέλουμε να χρησιμοποιήσουμε δείκτες.
Επειδή αντί της δίνοντας ακριβώς την τιμή,
αντί απλά περνώντας απλά η τιμή σε μια λειτουργία,
θέλουμε να περάσει με αναφορά.
Αυτό που λέμε πάσα από αναφορά είναι το είδος της δίνει το πλαίσιο για τη λειτουργία,
έτσι ώστε η λειτουργία μπορεί επίσης αλλάξετε τις τιμές μέσα σε αυτό το κουτί.
>> Εντάξει, έτσι απλά κάποιες βασικές δείκτη η ουσία είναι να δημιουργήσουμε δείκτες,
μπορείτε απλά να δηλώσει έναν τύπο, και βάζετε ένα αστέρι δεξιά μετά από αυτό.
Και ο τύπος είναι απλά τι είστε δείχνοντας.
Έτσι, αν πρόκειται για ένα αστέρι int, είστε δείχνοντας σε έναν int.
Αν είναι ένα αστέρι char, είστε δείχνοντας σε ένα γράφημα.
Και αν είναι ένα αστέρι φοιτητής, είστε δείχνοντας ένα φοιτητή.
Εντάξει;
>> Και είναι μεγάλη και τα 4 bytes.
Εξαιτίας αυτής της μεταβλητής δεν το κάνει πραγματικότητα
πρέπει να κρατήσει μια χαρα, ένας int, ή ένας φοιτητής.
Το μόνο που χρειάζεται για να κρατήσει μια διεύθυνση.
Γι 'αυτό είναι όλοι 4 bytes καιρό σε μια κανονική μηχανή 32-bit.
Εντάξει;
Μέχρι εδώ, το x είναι μια μεταβλητή που δείχνει σε int. y σημεία σε char. z σημεία
σε ένα πλωτήρα.
Οποιεσδήποτε ερωτήσεις εδώ;
Cool.
Και υπάρχουν δύο διαφορετικά σύμβολα που έχουν
να έχετε κατά νου όταν έρχονται στο δείκτη.
Έτσι αναφορά και εύρεση τιμών είναι οι μεγάλες επιχειρήσεις.
Έτσι, το εμπορικό και της μεταβλητή όνομα σας την δίνει;
Φοιτητής: Διεύθυνση.
Binky: Διεύθυνση.
Έτσι, αν έχετε δηλώσει int a ισούται με 5, τότε ampersand
του ένα πρόκειται να σας δώσω τη διεύθυνση.
Και μπορείτε πραγματικά να δοκιμάσετε να εκτυπώσετε και να δούμε
ποια διεύθυνση στη μνήμη μεταβλητή σας έχει.
Και τότε dereferencing-- έτσι ώστε η αναφορά,
να πάρει το address-- εύρεση τιμών είναι ακριβώς το αντίθετο.
ΟΚ, όπως ακριβώς φορές είναι η απέναντι από ένα τμήμα,
αστέρων είναι το αντίθετο της ampersand.
Έτσι, μέσα εύρεση τιμών πάει εκεί.
Έτσι, αν έχετε δώσει star-- μου Δεν know-- 50, ότι είναι
θα προσπαθήσω να πάω στη διεύθυνση του τον αριθμό 50 στο εσωτερικό του υπολογιστή σας.
Εντάξει, και γιατί βλέπουμε ότι είναι αντίθετα;
Διότι τι θα συμβεί αν το κάνετε κάτι σαν αστέρι εμπορικό και ένα;
Λοιπόν, σύμβολο ένα σας δίνει τη διεύθυνση μιας μεταβλητής, η διεύθυνση της a.
Αλλά αστέρι σημαίνει πάει εκεί.
>> Λοιπόν, τι θα συμβεί αν μεταβείτε στη διεύθυνση του α;
Μπορείτε απλά να πάρετε σε ένα, σωστά;
Έτσι, πηγαίνει στην διεύθυνση του α είναι το ίδιο πράγμα όπως ένα.
Γι 'αυτό είναι συνήθως αναφέρεται στην same-- αυτό
και αυτό αναφέρονται ως αντίθετες φορείς.
Εντάξει;
Έτσι δροσερό.
>> Κάτω από την κουκούλα, για παράδειγμα, αν δηλώνουμε int x ισούται με 5,
έχουμε μια μεταβλητή.
Και να θυμάστε ότι είπα κάθε variable-- και αυτό είναι ένα καλό πράγμα
για να κρατήσει σε mind-- έχει δύο διαφορετικά πράγματα που σχετίζονται με.
Έχει αντιμετωπιστεί και μια τιμή.
Εντάξει;
>> Έτσι, η τιμή στην περίπτωση αυτή είναι 5.
Και η διεύθυνση is-- ας πούμε, είμαι κάνοντας κάτι up-- είναι 0x04.
Και ο μόνος λόγος για τον οποίο συνήθως αντιπροσωπεύουν τις διευθύνσεις σε δεκαεξαδικό
είναι ένα, διότι είναι σαν καλό.
Πηγαίνει καλά με το δυαδικό.
Είναι εύκολο να μετατρέψετε από και προς το δυαδικό.
Και δεν παίρνει πάρα πολύ μεγάλο, αν έχετε ένα πολύ μεγάλο αριθμό.
Έτσι μας αρέσει να χρησιμοποιούν δεκαεξαδικό στις διευθύνσεις εκτύπωσης.
Αλλά θα μπορούσε να αποτελέσει αυτό ως ακέραιος αριθμός.
Είναι μια χαρά.
>> Και γι 'αυτό έχει μια διεύθυνση 4 και μια τιμή των 5.
Και τότε είπα δείκτη int αστέρων.
Έτσι, αυτό είναι ένα διαφορετικό είδος, ειδοποίηση.
Int δείκτη αστέρι ισούται η διεύθυνση του x.
Έτσι τι πρόκειται να είναι η τιμή του PTR;
Είναι πρόκειται να είναι η διεύθυνση του x, εδώ κάτω.
Εντάξει, έτσι η τιμή πρόκειται να να είναι η ίδια με τη διεύθυνση.
Αυτή είναι η ανάθεση λειτουργούν κάνω.
Και τότε ptr πρόκειται να έχει τη δική της διεύθυνση, η οποία αποδεικνύεται,
στην περίπτωση αυτή, η 8, εντάξει;
>> Και τότε μπορώ να δημιουργήσω ένα νέο αντίγραφο ακέραιο.
Και λέω αντίγραφο int ισούται πάει εκεί.
Έτσι πάει σε ό, τι ptr δείχνει προς.
Λοιπόν, τι είναι αυτό το PTR έχουν;
Ptr έχει 0x04.
Τι θα συμβεί αν προσπαθώ να πάω εκεί;
Θα βρείτε τον τύπο που έχει διεύθυνση x και ο οποίος έχει τη διεύθυνσή 4.
Και ποιος έχει αντιμετωπίσει τέσσερις είναι x.
Μήπως αυτό έχει νόημα;
Ναι;
>> Φοιτητής: Σε αυτή την περίπτωση, είναι το δείκτη σε μια στοίβα;
>> Binky: Στην περίπτωση αυτή, it's-- καλή ερώτηση.
Δεν είχα πραγματικά σκέφτομαι αυτό όταν κάνετε αυτές τις διευθύνσεις.
Αλλά αν αυτό είναι, όπως όλοι αυτές είναι τοπικές μεταβλητές,
τότε το x πρόκειται να ζήσουν in-- τα πάντα πρόκειται να ζήσουν στη στοίβα.
Έτσι, ό, τι συμβαίνει να δείχνουν προς στοίβα.
Μπορείτε μόνο να φτάσετε στο σωρό, όταν αρχίσετε να χρησιμοποιείτε malloc, σωστά;
>> Έτσι, αν θυμάστε στοίβα είναι κάθε φορά μπορείτε να καλέσετε μια συνάρτηση στο πρόγραμμά σας,
παρόμοια, κύρια για παράδειγμα, ή οποιαδήποτε άλλη λειτουργία, όπως η printf.
Όλες οι τοπικές μεταβλητές είναι πρόκειται να πάρει θέσει σε ένα πλαίσιο στοίβας.
Και θα πάμε για να πάρει όπως είχαν συσσωρευτεί στη στοίβα.
Αυτό είναι ό, τι λέγεται μια στοίβα.
Και όλες αυτές οι τοπικές μεταβλητές πρόκειται να είναι εκεί.
Και η heap-- και θα πάμε για να μιλήσουμε περισσότερο για αυτό το later--
ο σωρός είναι όπου όλα κατανέμονται δυναμικά τη ζωή της μνήμης.
Cool;
>> Έχουμε πάει σε αυτή τη διαφάνεια.
Ναι;
>> Φοιτητής: Γιατί δεν είναι int αντίγραφο επιστροφή 0x04;
>> Binky: Γιατί δεν είναι int αντίγραφο επιστροφή 0x04;
>> Φοιτητής: Γιατί δεν είναι ότι [δεν ακούγεται];
>> Binky: Γιατί αυτό είναι μια τιμή του PTR;
>> Φοιτητής: 0x04.
>> Binky: 0x04.
Τι θα συμβεί αν πάτε σε 0x04;
Τι θα πάρετε;
>> Φοιτητής: Ω, εντάξει.
Binky: Βλέπεις;
Φοιτητής: Ναι.
Binky: Έτσι μπορείτε να πάρετε 5.
Έτσι αντίγραφο πρόκειται να έχει 5, αν αυτό έχει νόημα.
Ναι;
>> Φοιτητής: Θα μπορούσαμε να έχουμε πάρει 5 στο κουτί τιμή [δεν ακούγεται]
αν βάλουμε int αντιγράψετε [δεν ακούγεται].
>> Binky: Int-- εμείς θα, ναι.
Αυτό θα γίνει λίγο πολύ το ίδιο πράγμα.
Αλλά με αυτόν τον τρόπο, μπορούμε να περάσουμε απευθύνονται σε λειτουργίες.
Και αυτό είναι το δροσερό πράγμα θα πάμε να κάνουμε τώρα.
>> Έτσι, αυτό το είδος της άσκησης έρχεται πάντα on-- πολύ συνήθως έρχεται στο κουίζ.
Γι 'αυτό είναι πολύ καλό για να προσπαθήσει να κάνει αυτό το είδος των πράγμα στον εαυτό σας.
Έτσι, προσπαθήστε να παρακολουθείτε ό, τι στη διεύθυνση είναι και θέλουν τις τιμές των μεταβλητών
είναι σε κάθε σημείο.
Έτσι, αυτό είναι ακριβώς τι πάμε να κάνουμε.
Εδώ, έχουμε βήματα, το ένα, δύο, τρία, τέσσερα, πέντε.
Ένα, δύο, τρία, τέσσερα, πέντε.
Και θα πάμε να παρακολουθείτε από τις τιμές του χ και α.
>> Έτσι τι είναι αυτό που κάνει, αν αυτό είναι ένα προβληματικός κώδικας, προσπαθούμε να κάνουμε σε πέντε.
Έτσι, προσπαθούμε να έρθουμε σε μια μεταβλητή και αλλάξτε την τιμή του σε 5.
Και να θυμάστε αναλογία μου έχει ένα κουτί και παραδίδοντάς το κουτί σε κάποιον;
Έτσι κύριος έχει αυτό το κουτί που ονομάζεται x.
Και αυτό περιλαμβάνει την τιμή 3.
Και εγώ προσπαθώ να παραδώσει αυτό το πλαίσιο για να πέντε.
>> Και θέλω να πέντε να αλλάξει η αξία της θέσης αυτής έως 5.
Και τότε εγώ απλά εκτυπώνουμε την τιμή του x.
Αυτό είναι ό, τι function-- μου Αυτό είναι αυτό που προσπαθώ να κάνω.
Είμαι απλώς προσπαθούν να ενημερώσετε η τιμή του χ έως 5.
Είναι σαφές τι κάνει η συνάρτηση;
>> Εντάξει, έτσι τι πρόκειται να είναι η τιμές του x και το δικαίωμα εδώ,
η πρώτη γραμμή, δεξιά πριν από την πρώτη line-- Θα say-- του προγράμματος;
>> Φοιτητής: Μάλλον σκουπίδια.
>> Binky: Απλά πράγματα σκουπίδια.
Γι 'αυτό απλά βάλτε N / A. Έτσι εμείς δεν γνωρίζουμε πραγματικά.
Όπως, μια δεν υπάρχουν ακόμη, γιατί δεν έχουμε κληθεί να πέντε.
Int ένα δεν έχει δηλωθεί.
Και το χ πρόκειται να υφίσταται εδώ, αλλά δεν έχουμε πραγματικά
αποδίδεται καμία αξία σε αυτό, οπότε ΟΚ;
>> Και τότε, τι πρόκειται να είναι η τιμές των χ και α σε αριθμό δύο;
>> Φοιτητής: [δεν ακούγεται].
>> Binky: Έτσι χ πρόκειται να είναι 3.
Αυτό είναι εύκολο, επειδή είμαστε αναθέτοντας 3 σε αυτό.
Και ακόμα δεν υπάρχει επειδή ένας μόνο ζει σε πέντε.
Έτσι, Πάω να έχουν 3 και τίποτα.
ή όπως τα σκουπίδια, όποια και αν είναι, δεν είναι πραγματικά ορίζεται.
Και τώρα, αυτό είναι το σημαντικό γραμμή.
Εδώ, θα πάμε να πραγματικά καλούν σε πέντε.
Και να θυμάστε αυτό που είπα.
Εμείς ποτέ δεν περνούν στο κουτί.
Εμείς απλά αντιγράψτε την αξία της το παράθυρο σε ένα άλλο κουτί.
Αυτό είναι όλοι οι υπολογιστές κάνουν, αντιγράψετε πράγματα από το ένα μέρος στο άλλο.
>> Έτσι, σε πέντε, τι κάνει στην πραγματικότητα είναι αντιγράφει η τιμή του x στο Α.
Έτσι τι πρόκειται να είναι εδώ;
Οι τιμές των χ και α.
3 και 3, θα αντιγραφεί μόνο είναι πάνω από το x προς ένα.
Cool.
>> Τώρα είμαστε εδώ.
Και τώρα θα πάμε να ενημερώσετε το α ισούται με 5.
Τι πρόκειται να συμβεί στη γραμμή τέσσερα;
>> Φοιτητής: [δεν ακούγεται].
>> Binky: α παίρνει ενημερώνεται, αλλά το Χ δεν λάβετε ενημέρωση.
Επειδή x εξακολουθεί να ζει στο κύριο, αυτό είναι ένα εντελώς διαφορετικά μπλοκ της μνήμης.
Είναι μια διαφορετική μεταβλητή.
α είναι μια άλλη μεταβλητή.
Που συμβαίνει να έχουν την ίδια αξία γιατί
αντιγραφούν πάνω στην τιμή του x στο Α.
Αλλά τώρα, όταν κάνω ένα ισούται με 5, το δεν επηρεάζει πραγματικά x με οποιονδήποτε τρόπο.
Αυτό είναι το δυσκολότερο μέρος.
Έχει νόημα για όλους;
Ναι;
Φοιτητής: Μία ακόμη ερώτηση, έχετε 3.
Γιατί είναι ένα already-- Ω, όχι, αυτό είναι 3.
Λυπούμαστε, αλλά δεν πειράζει.
Διάβασα 5.
>> Binky: Ναι, 3, 3.
>> Φοιτητής: [δεν ακούγεται], ναι.
Binky: Και τότε αναθέτουμε 5 ένα, αλλά δεν αλλάζει πραγματικά x.
Καλό;
Φοιτητής: Ναι.
Binky: Ναι;
Μπορείτε να μας εξηγήσετε πάλι πώς α αντιγράφεται [δεν ακούγεται];
>> Binky: Εντάξει, έτσι όταν σας καλούν σε πέντε του x, οπότε αυτή τη γραμμή του κώδικα εδώ.
σε πέντε από τα Χ, τι είναι το Χ;
x είναι μόλις 3 σε αυτό το σημείο, σωστά;
Έτσι θα μπορούσατε να σκεφτείτε ακριβώς από τη θέση ένα 3 στο εδώ και ξεχνώντας για το x.
Απλά βάλτε ένα 3 εδώ.
Όπως, θα πάμε να αντιγράψετε πάνω από το τιμή του x στο int a που είναι εκεί πάνω.
Εντάξει;
>> Έτσι, η τιμή του x είναι 3.
Εμείς πάμε για να αντιγράψετε 3 πάνω σε ένα.
Και όλα αυτά άλλα μπλοκ τη μνήμη, αυτή η άλλη μεταβλητή
ονομάζεται θα έχει 3, καθώς και.
Μήπως αυτό έχει νόημα;
Ναι;
>> Φοιτητής: Αν δώσετε σε πέντε, όπως έχουν ως ακέραιος x αντί για ένα,
θα καθορίσει ότι τα πάντα;
>> Binky: Αν είναι μια integer-- όχι, ότι δεν θα καθορίσει τα πάντα.
Έτσι, αυτό είναι μια πολύ καλή ερώτηση.
Δεν έχει τόση σημασία τι να καλέσετε αυτές τις μεταβλητές.
Και πάλι, αυτό θα είναι ένα ζήτημα του πεδίου εφαρμογής, επειδή δεν είναι το ίδιο χ.
Είναι εντελώς διαφορετικές θέσεις στη μνήμη.
Φοιτητής: [δεν ακούγεται].
Binky: Γι 'αυτό δεν κάνει πραγματικά έχει σημασία τι θα τους αποκαλούν.
Αυτό δεν διορθώσει τα πράγματα, εντάξει;
Περισσότερες ερωτήσεις;
Ναι;
>> Φοιτητής: Πώς είναι πίσω στο αριθμός πέντε [δεν ακούγεται];
Binky: Εντάξει, δεν έχουμε κάνει ακόμα.
Ας πάμε στο νούμερο πέντε, τότε.
>> Φοιτητής: [δεν ακούγεται];
>> Binky: Τι;
>> Φοιτητής: Έχετε μια επιστροφή σε όλους;
Binky: Δεν έχουμε μια επιστροφή, όχι της κύριας.
Αλλά το κύριο επιστρέφει 0 αυτόματα αν δεν επιστρέψει τίποτα.
Ναι;
>> Φοιτητής: Θα μπορούσατε να κάνετε main-- ή θα μπορούσατε να κάνετε σε πέντε επιστροφή;
>> Binky: Θα μπορούσαμε να έχουμε σε πέντε επιστρέψει ένα, ναι.
Αλλά τότε θα πρέπει να ορίσετε x ισούται με την τιμή επιστροφής της σε πέντε,
η οποία θα ήταν μια ελαφρώς διαφορετικό πρόγραμμα.
Θα λειτουργήσει.
Αλλά αυτό που θέλουμε να κάνουμε είναι ό, τι είναι κάτι που ονομάζεται αλλαγή του τόπου.
Έτσι θέλουμε πραγματικά να αλλάξει αυτό το πλαίσιο και να μην ανησυχείτε
σχετικά με την επιστροφή αξίες ή τίποτα.
Εντάξει;
>> Αυτό είναι ακριβώς όπως τη λειτουργία εναλλαγής David έδειξε σε διάλεξη, με εξαίρεση είμαι
ασχολούνται μόνο με μία μεταβλητή.
Και χρησιμοποίησε δύο, έτσι int a και b και τότε προσωρινή μεταβλητή και εταζέρα.
Εντάξει;
Έτσι ποια είναι η τελευταία γραμμή;
Μετά από πέντε επιστροφές, είναι απλά ο ένας πρόκειται να πάει μακριά.
Εμείς δεν θα έχουν πια, και μόνο το Χ θα εξακολουθούν να ζουν σε.
>> Και μαντέψτε τι; x δεν αλλάζει την αξία του,
μετά από όλα, γιατί είμαστε μόνο αλλάζοντας την τιμή του ενός.
Αυτός είναι ο λόγος για τον οποίο το Χ ήταν 3 καθ 'όλη.
Εντάξει;
Καλή.
Έτσι, αυτό το πρόγραμμα δεν επιτύχουμε αυτό που θέλαμε.
Τώρα ας το διορθώσετε.
>> Και το πρόγραμμα λύση είναι χρησιμοποιώντας δείκτες.
Αυτό που κάνουμε είναι να έχουμε τρεις γραμμές που είναι διαφορετικές.
Οι πρώτοι είναι δεν είμαστε περνώντας x.
Είμαστε περνώντας τη διεύθυνση του x.
Έτσι, αντί να αντιγράφουν πάνω η αξία του κουτιού,
Είμαι ακόμα πρόκειται να αντιγράψετε πάνω από κάτι.
Αλλά είμαι αντιγραφή πάνω η διεύθυνση του κουτιού.
>> Έτσι, αν έχω περάσει τη διεύθυνση του κουτί με πέντε, τότε σε πέντε
θα είναι σε θέση να διαπιστώσει ότι το μνήμη και αλλάξτε την τιμή του.
>> Έτσι και στη συνέχεια μέχρι εκεί, έχω ότι δεν είναι ένας int πια.
α είναι ένα αστέρι int.
Είναι ένας δείκτης σε ακέραιο.
Και τότε, γιατί περνάω το αντιμετώπιση εδώ, και τότε τι να κάνω
δεν είναι ίσο με 5, γιατί ένας κρατάει μια διεύθυνση.
Έτσι, αυτό που θέλω να κάνω είναι να πάει εκεί και ενημερώσετε τα περιεχόμενα αυτής της διεύθυνσης
με 5.
>> ΟΚ, οπότε ας πάμε μέσα το σύνολο των γραμμών ένα προς ένα.
Έτσι, όταν αρχίσω εδώ, εγώ εξακολουθούν να έχουν Ν / Α Ν / Α Ν / Α
για πάντα στην πρώτη γραμμή, γιατί δεν έχω πραγματικά
δηλωθεί ακόμη πράγματα.
Και τότε η Γραμμή δύο, έχω χ ισούται με 3.
Ένας int αστέρι μια δεν υπάρχουν, ίδιο πράγμα όπως και πριν.
>> Τώρα γίνεται ενδιαφέρον.
Έτσι, Πάω να περάσει.
Και ας υποθέσουμε ότι η διεύθυνση x είναι 12 στο δεκαεξαδικό.
Ας υποθέσουμε αυτό.
Μου έκανε επάνω.
Έτσι, αυτό που είμαι περνώντας εδώ είναι ένα προς πέντε.
Περνάω 12.
>> Έτσι τι αξία έχει ένα έχει;
>> Φοιτητής: [δεν ακούγεται].
>> Binky: Συγγνώμη;
>> Φοιτητής: [δεν ακούγεται].
Binky: Ναι, όπως, για να ας υποθέσουμε ότι είμαστε εδώ, τώρα.
Ρωτάω.
>> Φοιτητής: [δεν ακούγεται].
>> Binky: Έχει ξεκινήσει.
>> Φοιτητής: [δεν ακούγεται].
Binky: Επειδή περάσαμε κάτι στη λειτουργία.
Ναι;
>> Φοιτητής: Διεύθυνση του x.
Binky: Δεν πρόκειται να έχει τη διεύθυνση του x.
Και η διεύθυνση του x είναι 12, καλό.
Έτσι χ πρόκειται να είναι 3, επειδή που δεν έχουν αλλάξει πραγματικά x ακόμα.
Και στη συνέχεια ένα πρόκειται να είναι 0x12, έτσι η διεύθυνση του x, γιατί αυτό είναι
τι περάσαμε σε πέντε.
>> Και τότε τι θα συμβεί αν προσπαθήσουμε να πάμε εκεί;
Τι θα βρούμε;
Έτσι, αν προσπαθήσετε να εκτυπώσετε ένα αστέρι, θα πάμε να ακολουθήσει αυτή τη διεύθυνση
και να πάρει την τιμή στο εσωτερικό.
Και η τιμή είναι απλά η ίδια αξία που χ
έχει, διότι αυτή είναι η διεύθυνση του Χ, η οποία θα είναι 3.
Είμαστε καλά;
>> OK, και στη συνέχεια, τώρα, μπορούμε πραγματικά να πάμε εκεί.
Και έχουμε ενημερώσει ανεξάρτητα από Είναι σε αυτή τη διεύθυνση 12.
Εμείς το 5 κάνει.
Έτσι τώρα τα δύο Χ και ένα αστέρι είναι 5.
>> Γιατί συμβαίνει αυτό;
Επειδή η διεύθυνση του x είναι 12.
Και έχει επίσης 12 ως αξία του.
Έτσι, αν ακολουθήσουμε 12, είμαστε ακριβώς πρόκειται να βρούμε το x.
Έτσι, ό, τι κάνουμε με ένα αστέρι πρόκειται να συμβεί
στο x, επειδή περιέχει ένα η διεύθυνση του x.
Εντάξει;
>> Και αυτό είναι σαν την ουσία της ενημέρωσης κώδικα.
Έτσι τώρα είμαστε σε θέση, από πέντε, στην πραγματικότητα
μνήμη πρόσβασης που έζησε στην κύρια.
Έτσι, αυτή η μνήμη δεν ζει για να πέντε, όπως και πριν, αυτή η διεύθυνση 12.
Και ήμασταν σε θέση να πάτε εκεί και αλλάξτε την τιμή του σε 5.
>> Και στη συνέχεια, όταν θα επιστρέψετε, μπορούμε να ξεχάσουμε ένα.
Ξεχνάμε για ένα αστέρι.
Και το Χ είναι ακόμα πέντε.
Έτσι, εάν θέλετε να εφαρμόσει μια λειτουργία ανταλλαγής,
θα κάνει ακριβώς το ίδιο πράγμα, εκτός από εσάς πρέπει να int αστέρια εδώ,
και ούτω καθεξής και ούτω καθεξής.
Εντάξει;
Είμαστε καλά;
Cool.
>> Έτσι αριθμητικής δεικτών.
Αυτό είναι ένα ελαφρώς δύσκολο θέμα.
Έτσι αποδεικνύεται ότι δείκτες είναι μόνο ακέραιοι αριθμοί.
Μπορείτε να σκεφτείτε τους ως ακέραιοι.
Επειδή στη μνήμη, μπορείτε να έχετε, όπως μνήμη διευθύνσεων μηδέν, ένα, δύο, τρία,
τέσσερα, πέντε.
Έτσι μπορούμε να συνοψίσουμε τις διευθύνσεις μνήμης.
>> Και αυτό είναι συνήθως τι κάνεις όταν είστε σε σειρά και, για παράδειγμα.
Μια σειρά είναι ακριβώς όπως ένα συνεχόμενο μπλοκ της μνήμης, των παρτίδων των χαρακτήρων,
για παράδειγμα, πολλά ints.
Έτσι, εάν θέλετε να μεταβείτε στο δεύτερη int ή στο τρίτο int,
μπορείτε απλώς να συνοψίσω κάτι στην πρώτη διεύθυνση, και θα πάμε για να φτάσετε εκεί.
Έτσι, αυτό είναι πραγματικά χρήσιμο για αυτό.
>> Και το πράγμα για να κρατήσει στο μυαλό, όμως, είναι
ότι δεν είναι ακριβώς όπως κανονική αριθμητική με την έννοια
ότι αν έχουμε να κάνουμε με, ας πούμε, ένα αστέρι int, και μπορείτε να προσθέσετε 1 σε αυτό,
τότε δεν πρόκειται να προσθέσετε 1 στη διεύθυνση,
θα πάμε να προσθέσετε 4 στη διεύθυνση.
Επειδή ένας int είναι 4 bytes.
>> Έτσι, αυτό είναι ακριβώς όπως το περπάτημα σε μια σειρά.
Αν έχουμε μια σειρά από πολλά ints και Στη συνέχεια θα προσπαθήσουμε να πάμε στο δεύτερο,
είναι ουσιαστικά μόνο αθροίζοντας τα διεύθυνση του πρώτου συν 1.
Αλλά αυτό δεν θα be-- απλά ας πούμε ότι η διεύθυνση του πρώτου είναι 4.
Εδώ, σε αυτή την περίπτωση.
Και αν αθροίσουμε, έτσι αυτό είναι ό, τι συμβαίνει.
Έχουμε έναν int.
Int x ισούται με 5.
Χ έχει τιμή 5.
Και έχουμε προετοιμαστεί αυτό το δείκτη, int y int αστέρων y ισούται με τη διεύθυνση του x.
>> Ας υποθέσουμε ότι η διεύθυνση του x είναι 4.
Τι πρόκειται να συμβεί τώρα αν μπορώ άθροισμα προσθέσετε 1 έως y;
Είναι πρόκειται να πραγματικά άθροισμα 4 αντί των μόλις 1.
Έτσι μπορώ να προσθέσω ένα 1, αλλά στην πραγματικότητα προστίθενται 4, επειδή ο υπολογιστής είναι έξυπνος.
Έτσι, πρόκειται να προσθέσει στην πραγματικότητα από i φορές το μέγεθος του τύπου του δείκτη.
Εντάξει;
>> Έτσι, αν αυτό ήταν ένα char, για παράδειγμα, αν αυτό ήταν ένα y char αστέρων,
και αν προσθέσαμε 1 τότε αυτό θα είναι 5, διότι char είναι μήκους 1 byte.
Καλό;
>> Και, τέλος, φτάσαμε στο δεικτών και πινάκων.
Αποδεικνύεται ότι κάθε χρόνο έχουμε να κάνουμε με μια σειρά,
είστε πράγματι ασχολείται με ένα δείκτη.
Το πολύ ωραίο εννοιολογικό λόγο για Αυτό είναι ότι οι συστοιχίες είναι πολύ μεγάλο.
Έτσι θυμηθείτε ότι είπα ότι κάθε φορά που περνάτε πράγματα γύρω,
μπορείτε να αντιγράψετε τα πάντα.
Έτσι, εάν έχετε μια σειρά ότι είναι πραγματικά, πραγματικά μεγάλο,
που πραγματικά δεν θέλουν να αντιγράψετε τα πάντα κάθε φορά
μπορείτε να περάσετε γύρω στο άλλο λειτουργία, γιατί αυτό είναι ακριβώς
τεράστια ποσά της εργασίας.
Έτσι, αυτό που κάνεις είναι μόνο το παρελθόν η διεύθυνση του πρώτου byte.
Και τότε η λειτουργία θα έχει πρόσβαση σε όλα τα στοιχεία στην εν λόγω συστοιχία.
Έτσι θα περάσει τη σειρά από τη διεύθυνσή της, έτσι ώστε η διεύθυνση του πρώτου byte.
>> Έτσι, αν έχουμε δηλώσει int σειρά 3, εδώ, γνωρίζουμε
πώς να αποκτήσετε πρόσβαση στο πρώτο στοιχείο χρησιμοποιώντας το συμβολισμό βραχίονα.
Αν θυμάστε το στήριγμα σημειογραφία, βραχίονα συστοιχία 0 ισούται με 1.
Λοιπόν, αυτό θα ήταν ακριβώς το ίδια όπως ακριβώς να πάτε εκεί και να θέσει 1.
Εντάξει, είναι ακριβώς το ίδιο πράγμα.
Έτσι, το συμβολισμό βραχίονα εδώ θα είναι η ίδια με αυτή τη γραμμή.
>> Και μαντέψτε τι το συμβολισμό βραχίονα για στήριγμα σειρά 1 θα είναι;
Είναι ακριβώς θα είναι το ίδιο πράγμα με αυτό.
Έτσι, προσθέστε ένα σε σειρά.
Μετακίνηση κατά ένα μήκος στη μνήμη.
Πηγαίνετε εκεί, και να θέσει ένα 2.
Εντάξει;
Και αυτή η γραμμή είναι το ίδιο πράγμα.
Θέλουμε να πάμε στο τρίτο κουτί, έτσι συστοιχία συν 2.
Πηγαίνετε εκεί, και να θέσει ένα 3.
Έτσι, στη μνήμη, ό, τι είναι πρόκειται να συμβεί είναι ότι είμαστε
πρόκειται να έχει 1, 2, και 3, καθώς η τρία στοιχεία της παρούσας διάταξης.
>> Θα μπορούσαμε να είχαμε κάνει αυτό χρησιμοποιώντας εξοικειωμένοι βραχίονα σημειογραφία μας.
Απλά θέλω εσείς να ξέρετε ότι είναι το ίδιο πράγμα.
Εντάξει, ερωτήσεις σχετικά με αυτό;
Νίκαιας.
Τώρα, είμαι πρόκειται να παραδώσει το πάνω στο Hannah,
>> ΧΑΝΑ: Yay, Yee-Haw.
>> Binky: Μιλώντας για μνήμη και την ουσία του άρθρου.
[Χειροκρότημα]
>> ΧΑΝΑ: Γεια σου, δροσερό, έτσι είμαστε πρόκειται να μιλήσω λίγο περισσότερο
για τη μνήμη, την οποία εμείς απλά αντιμετωπιστούν με τη χρήση δεικτών.
Έτσι, υπάρχουν δύο κύρια μέρη του μνήμη που μας ανησυχεί.
Έχουμε τη στοίβα, η οποία αναπτύσσεται μέχρι και στο κάτω μέρος, και σωρός, η οποία
κατεβαίνει από την κορυφή.
Και η στοίβα πρόκειται να κρατήσει όλων των μεταβλητών παράδειγμα μας.
Έτσι, κάθε καλεί σε συνάρτηση παίρνει δικό του μικρό σκελετό του στη στοίβα.
Έτσι όπως Gabe αναφέρθηκε νωρίτερα, αν εμείς καλούν ξανά και ξανά τη λειτουργία,
θα πάμε να τακτοποιήσουν τα πράγματα στη στοίβα.
>> Και ομοίως, ο σωρός, η οποία ξεκινά από την κορυφή
πρόκειται να κρατήσει όλα της μνήμης ότι εμείς δυναμικά διαθέσουν.
Και έτσι όπως εμείς δυναμικά εκχωρήσει μνήμη,
Αυτό θα κατέβει προς τα κάτω.
Ζευγάρι πράγματα που πρέπει να γνωρίζετε όταν είμαστε με τη στοίβα και το σωρό,
με τη στοίβα, αν έχουμε πάρα πολύ many-- ας say-- αναδρομικές κλήσεις,
και είμαστε καλώντας μια συνάρτηση και πάλι, και ξανά, και ξανά, και ξανά,
και αυτό είναι στοίβαγμα, στοίβαγμα, στοίβαγμα.
Και αυτό πρόκειται να συντριβή στο σωρό.
Εμείς πάμε να ξεμείνει από μνήμη.
Αυτό πρόκειται να προκαλέσει μια πρόβλημα για τον υπολογιστή.
Και αυτό ονομάζεται η υπερχείλιση στοίβας.
Έτσι, αυτό είναι σίγουρα κάτι που πρέπει να γνωρίζει και να προσπαθήσουμε να αποφύγουμε.
Και ο σωρός, πρέπει να θυμόμαστε να μην διαρρέουν τυχαία μνήμη.
Κάθε φορά που χρησιμοποιείτε malloc, δεν ξεχάσετε να ελευθερώσει εκείνη την μνήμη.
Διαφορετικά, θα πρέπει ακριβώς είναι στο σωρό σπατάλη,
και ο υπολογιστής δεν θα γνωρίζουν ότι είναι ελεύθερη να χρησιμοποιήσει αυτή την μνήμη.
Αυτά λοιπόν είναι μερικά πράγματα να είναι πολύ προσεκτικοί με όταν
έχουμε να κάνουμε με η στοίβα και ο σωρός.
Οποιεσδήποτε ερωτήσεις με αυτό;
Awesome.
>> Εντάξει, δροσερό.
Έτσι, αυτό το είδος έχει το ίδιο ιδέα ως υπερχείλιση στοίβας, όπου
θα πάμε πέρα ​​από το όρια του τι μνήμη
είναι υποτίθεται ότι πρέπει να είναι σε θέση να χρησιμοποιήσει.
Πάρτε λοιπόν, για παράδειγμα, ένα ρυθμιστικό διάλυμα, ή σας θα μπορούσε απλά να σκεφτεί ότι αυτό ως μια σειρά.
Και είπαμε, εντάξει, θα πάμε να να δημιουργήσει αυτό το ωραίο μικρό πίνακα.
Είναι πρόκειται να είναι ένα string.
Ή πρόκειται για την αποθήκευση χαρακτήρων.
Και είναι ακριβώς πρόκειται να πω ένα γεια.
Και αυτό είναι απροσδιόριστο.
Έτσι μπράβο.
>> Αλλά αν ήταν κάποιος το κακό και ήθελε να κάνει κάτι κακό με αυτό το φάσμα, τι
Θα μπορούσα να κάνω είναι να προσπαθήσει να γράψει μετά το τέλος του string.
Και όπως θα δείτε, αν Γράφω αρκετά μακριά,
Μπορώ να επηρεάσει πραγματικά η διεύθυνση επιστροφής.
Και αν αρχίσω να επηρεάσει η διεύθυνση επιστροφής,
Έχω να επηρεάσει το πώς το πρόγραμμα πραγματικά τρέχει.
Και αντί να επιστρέψει, θα ξέρετε, μια ευτυχισμένη συμβολοσειρά όπως γειά σου, εγώ
θα μπορούσε να κάνει κάτι κακό, όπως πάει να κάπου αλλού στον υπολογιστή σας, ακόμα
μνήμη, το αλλάξετε, ό, τι θέλω να κάνω.
Έτσι, αυτό είναι ό, τι αυτό θα μοιάζει είναι αν εγώ ακριβώς το είδος του γέμισε
με τυχαία τιμή σκουπίδια, σε αυτή την περίπτωση, μόνο ένα.
Και τότε, όταν στην πραγματικότητα πήρε την διεύθυνση της μνήμης,
Άρχισα να το γεμίσετε με κάτι ότι έκανα αυτό που ήθελα να κάνω.
Οποιεσδήποτε ερωτήσεις με υπερχείλιση;
Φοβερό, φέρουν δεξιά μέσα από αυτά τα πράγματα.
>> Εντάξει, έτσι μιλήσαμε πολύ για δείκτη με Gabe.
Πώς θα πάρετε πραγματικά ένα δείκτη;
Πώς θα πάρετε μια διεύθυνση στη μνήμη;
Λοιπόν, μπορούμε να χρησιμοποιήσουμε αυτό το ωραίο συνάρτηση malloc η κλήση, η οποία
πρόκειται να πάρει ένα μικρό κομμάτι της μνήμης,
Ειδικότερα, στη σωρός, όπως συζητήσαμε,
και πρόκειται να σας δώσει πίσω ένα δείκτη σε αυτή τη διεύθυνση στη μνήμη.
Και το επιχείρημα ότι εμείς πρέπει να δώσει στην malloc
είναι πόσος χώρος στη μνήμη που θέλουμε.
>> Έτσι, μπορείτε να δείτε το μέγεθος σε byte.
Ας πούμε, για παράδειγμα, ή Στην πραγματικότητα, σε αυτό το παράδειγμα,
διαθέτουμε αρκετά χώρος για 10 ακέραιοι.
Έτσι, κατά πάσα πιθανότητα αυτό θα πάμε να θέλουν να τεθεί εδώ είναι ένας πίνακας 10 ακεραίων.
Έτσι, δίνουμε το μέγεθος των πόντους, κάτι που Μάθαμε ήταν πόσα bytes;
Φοιτητής: 4.
ΧΑΝΑ: 4, όμορφη, και εμείς θέλουν 10 από αυτούς σε μια σειρά,
έτσι ώστε να έχουμε αρκετό χώρο για να αποθηκεύουν όλα τα 10 ακέραιοι, σε αυτή την περίπτωση.
Κάτι εξαιρετικά σημαντικό, κάθε φορά που θα καλέσετε malloc,
θα πρέπει να ελέγξετε για μηδενική.
Εάν δεν μπορείτε να ελέγξετε για μηδενική, και, malloc αν εξαντληθεί ο χώρος
και δεν μπορεί πλέον να σας δώσει οποιαδήποτε περισσότερη μνήμη, θα επιστρέψει null.
Έτσι, αν δεν έχετε ελέγξει, malloc μπορεί να επιστρέψει null.
Και στη συνέχεια, αν προσπαθήσουμε να dereference ένα κενό δείκτη,
θα πάμε να πάρετε ένα σφάλμα κατάτμησης, το οποίο θα μιλήσουμε για το δικαίωμα τώρα.
Awesome.
>> Εντάξει, ερωτήσεις με malloc;
Ναι;
>> Φοιτητής: Μήπως έλεγχο null [Δεν ακούγεται] δεν το κάνουμε για το κουίζ;
>> ΧΑΝΑ: Σίγουρα, η ερώτηση ήταν μήπως matter-- στο κουίζ,
θα μπορείτε να πάρετε τα σημεία εκτός εάν δεν ελέγχει για null;
Ναι, θα πάρετε πόντους μακριά αν δεν ελέγξετε για μηδενική.
Κάθε φορά που καλείτε malloc, τόσο για το κουίζ και psets σας και στην πραγματική ζωή,
θα πρέπει να ελέγξετε για μηδενική.
Καλή ερώτηση.
>> Gabe: Τι μπορώ να κάνω εάν δεν απελευθερώσει;
ΧΑΝΑ: Gabe θέλει να ξέρει Τι κι αν δεν το κάνουμε δωρεάν.
Τότε θα έχουμε μια Διαρροή μνήμης στο σωρό μας.
Οποιεσδήποτε άλλες ερωτήσεις;
Ναι;
>> Φοιτητής: Μπορεί you-- πάει πάνω υπερχείλιση πραγματικός γρήγορος και πάλι;
>> ΧΑΝΑ: Σίγουρα.
Το ζήτημα ήταν να πάμε πάνω υπερχείλιση πραγματικά γρήγορα.
Ας επιστρέψουμε σε αυτές τις διαφάνειες.
Έτσι, ένα ρυθμιστικό, μπορείτε απλά σκεφτείτε το σαν μια σειρά, έτσι δεν είναι;
Έχετε κάποιο χώρο στη μνήμη.
Και όταν εμείς πρώτα να δημιουργήσετε συστοιχία μας, γνωρίζουμε συστοιχίες έχουν σταθερό μέγεθος,
ή ρυθμιστικό μας έχει ένα σταθερό μέγεθος.
>> Ας πούμε ότι σε αυτή την περίπτωση, έχουμε μόνο αρκετό χώρο για να γράψετε το string γεια.
Αν πάμε παρελθόν αυτό το όριο, αν πάμε παρελθόν τι σειρά μας είπε ότι θα μπορούσε να κρατήσει,
θα μπορούσαμε πραγματικά να αρχίσετε γράφοντας στη μνήμη
ότι ο υπολογιστής δεν θέλει να γράψετε σε.
Και συγκεκριμένα, αν χτυπάμε κάτι σαν την επιστροφή
αντιμετώπιση της λειτουργίας, η οποία, όπως και κάθε άλλο κομμάτι της μνήμης,
είναι απλά κάπου στο σας υπολογιστή, μπορείτε πραγματικά
αλλάξει αυτό και να αρχίσει να κάνει κακά πράγματα.
Απαντήσω στην ερώτησή σας;
Φοβερό, κάτι άλλο;
Ναι;
>> Φοιτητής: Έτσι στοίβα [δεν ακούγεται], μπορείτε είπε πάμε από το κάτω ανεβαίνει.
Στο εύρος στοίβα, κάνει η μνήμη πάει από, όπως,
πάνω προς τα κάτω που αφορούν σε κάθε διάλειμμα;
>> ΧΑΝΑ: Πώς you-- αναβάλει τον Rob σε αυτό το σημείο.
>> ROB: Θα αυξηθεί στο ίδιο κατεύθυνση όπως τη στοίβα μεγαλώνει.
ΧΑΝΑ: Εντάξει.
ROB: Έτσι έχω μπερδευτεί.
Αυτό πρόκειται να είναι αφαίρεση.
ΧΑΝΑ: Εντάξει.
ROB: Αυτό είναι σωστό.
Έτσι, αν η στοίβα μεγαλώνει επάνω, τότε generally--
δεν πρέπει να είναι σαν αυτό. αλλά μπορείτε να δηλώσετε int x.
Στη συνέχεια, μπορείτε να κηρύξει int y.
Στη συνέχεια, int x θα είναι γενικά κάτω στη στοίβα από int y.
Αλλά αυτό είναι μόνο ένα γεγονός.
Αυτό δεν είναι σαν ένα σημαντικό πράγμα σπόρων.
>> ROB: Έτσι, το ερώτημα και πάλι ήταν απλά τι συμβαίνει κάθε καρέ συσσωρεύεται.
Έτσι κάθε συνάρτηση παίρνει μια μικρό κομμάτι της στοίβας.
Και όπως μπορείτε να ανεβείτε, μέσα σε αυτό μικρό κομμάτι, μέσα σε αυτό το πλαίσιο,
εμείς θα πούμε ότι οι μεταβλητές μέσα σε αυτό το πλαίσιο, επίσης, ανεβάσουμε.
Ερώτηση;
>> ROB: Ακριβώς για να είναι στο μικρόφωνο.
ΧΑΝΑ: Ω, ναι.
ROB: Θα μιλήσω σε σας.
ΧΑΝΑ: Ω, ναι, εντάξει.
ROB: Η εξαίρεση είναι για τις συστοιχίες και structs,
όπου συστοιχίες, ένα κατώτερο δείκτης στη συστοιχία,
και σε structs σε υψηλότερες τομέα στα structs
είναι εγγυημένη για να είναι σε χαμηλότερες διευθύνσεις από μια μεταγενέστερη τιμή στη συστοιχία.
Επομένως, αυτά είναι εγγυημένα.
Αλλά οποιεσδήποτε συγκεκριμένες μεταβλητές μέσα, όπως int x και int y μέσα σε μια συνάρτηση,
δεν υπάρχει απαραίτητα σχέση ανάμεσα στις διευθύνσεις τους.
ΧΑΝΑ: Μια άλλη ερώτηση εδώ;
Φοιτητής: Έτσι σε ρυθμιστικό ροής, μόνο ρυθμιστικό υπερχείλιση
συνέβη μόνο όταν έχουν, όπως, αποδίδεται
μία ποσότητα μίας συστοιχίας ότι τότε είναι μεγαλύτερη;
Όπως, μπορείς;
Έτσι, αν είστε ζητώντας κάτι από το user--
>> ΧΑΝΑ: MM-HM.
Φοιτητής: Μπορούν να κάνουν με τη βία να σας δώσει κάτι πίσω
αυτό είναι μεγαλύτερο από ό, τι έχετε διατεθεί για αυτούς;
ΧΑΝΑ: Σίγουρα, έτσι ώστε η ερώτημα ήταν κατά βάση,
μπορεί ο χρήστης να σας δώσει περισσότερο από ό, τι μπορείτε να ζητήσετε;
Φοιτητής: Ναι.
ΧΑΝΑ: Λοιπόν, θα μπορούσε να αποτρέψει το χρήστη από το να κάνουν αυτό.
Θα μπορούσε συγκεκριμένα να πω δεν κάνει να μου δώσει περισσότερα από ό, τι χ αριθμό από bytes
Έχω να σας δοθεί μόνο δωμάτιο για αριθμό x των bytes, x αριθμό των χαρακτήρων.
Έτσι, αυτό είναι κάτι που θέλετε να αποτρέψει.
Ναι;
Ποια είναι η διαφορά μεταξύ Υπερχείλιση στοίβας και υπερχείλιση του buffer;
>> ΧΑΝΑ: Εντάξει, έτσι η στοίβα overflow-- ω, τι
είναι η διαφορά μεταξύ στοίβα υπερχείλιση και η υπερχείλιση του buffer;
Έτσι θέλουμε να σκεφτούμε υπερχείλισης στοίβας συμβαίνει όταν στην πραγματικότητα είμαστε
στοίβαγμα αυτές τις κλήσεις συναρτήσεων.
Ας πούμε ότι έχετε μια αναδρομική συνάρτηση, γιατί ξέρουμε ότι κάθε φορά που θα
καλέσετε μια συνάρτηση, που παίρνει δικό του πλαίσιο στη στοίβα.
>> Έτσι συσσωρεύονται πάρα πολύ υψηλή, και τότε θα αρχίσει να ξεχειλίζει.
Και χρησιμοποιούν πάρα πολλή μνήμη, και δεν έχουμε πουθενά αριστερά.
Παίρνουμε το σφάλμα.
>> Υπερχείλιση είναι εντός προγράμματος.
Θέλουμε να μην έχουν αναγκαστικά τρέχουν έξω από τη μνήμη κατά τον ίδιο τρόπο
ότι θα μπορούσαμε αν είμαστε στοίβαγμα μέχρι τόσες πολλές κλήσεις συναρτήσεων,
αλλά γράφουμε παρελθόν μνήμη που γνωρίζουμε ότι μπορούμε να χρησιμοποιήσουμε.
Και αυτό μας επιτρέπει να κάνουμε κακά πράγματα.
Ναι;
>> ROB: Ναι, ίσως να θέλετε να επαναλάβω μόνο αυτό,
αλλά μπορείτε επίσης να σκεφτείτε της υπερχείλισης στοίβας
ως σαν ένα συγκεκριμένο τύπο της υπερχείλισης buffer.
Ή μπορείτε απλά σκεφτείτε σας στοίβα ως ένα πραγματικά μεγάλο ρυθμιστικό.
Στη συνέχεια, όταν θα σε πλημμυρίσουν μπορείτε στοίβα, Είναι σαν ένα είδος buffer overflow.
Αλλά μια υπερχείλιση στοίβας είναι μόνο ένα ειδικά όρος που χρησιμοποιείται όταν η στοίβα
ίδια ξεχειλίζει.
>> ΧΑΝΑ: Δεξιά, έτσι ώστε να Επαναλαμβάνω για το βίντεο,
αυτό μπορείτε να σκεφτείτε υπερχείλισης στοίβας ως ένα συγκεκριμένο είδος της υπερχείλισης buffer.
Cool;
Οποιεσδήποτε άλλες ερωτήσεις, πριν πάμε για;
Awesome.
>> Εντάξει, δροσερό, οπότε ας μιλήσουμε για ορισμένα κοινά μηνύματα λάθους.
Αυτό είναι κάτι που έχει εμφανίζονται επάνω σε πολλαπλές κουίζ,
έτσι κάτι που αξίζει λαμβάνοντας μια δεύτερη ματιά.
Είμαι βέβαιος ότι έχετε αντιμετωπίσει τουλάχιστον μερικά από αυτά
όπως κάνετε το πρόβλημά σας θέτει.
Έτσι, βεβαιωθείτε ότι μπορείτε να μιλήσετε γι 'αυτούς στο κουίζ.
>> Έτσι, το πρώτο είναι ένα σφάλμα κατάτμησης.
Και αυτό είναι κάθε φορά που προσπαθήσετε να αποκτήσετε πρόσβαση μνήμης
ότι εμείς δεν σας επιτρέπεται η πρόσβαση.
Έτσι, μπορείτε migh έχετε δει αυτό, για παράδειγμα, στο ξεμπλοκάρισμα.
Εάν ανιχνεύσει σύγκρουση null επιστρέφουν, και στη συνέχεια θα
Προσπάθησα να κάνω κάτι με την εν λόγω τιμή null,
ο υπολογιστής θα δώσει Είσαι ένα σφάλμα κατάτμησης.
Έτσι, ένα, ένα σημαντικό πράγμα που πρέπει να κάνουμε, προκειμένου να προσπαθήσει να αποφύγει αυτό
είναι να ελέγχετε πάντα για μηδενική.
>> Μπορεί να έχετε δει επίσης σιωπηρή δήλωση του λειτουργία.
Έτσι, αυτό είναι ό, τι συμβαίνει όταν Allison σας έδειξα
πώς μπορούμε να κάνουμε ένα πρωτότυπο, σωστά;
Ας πούμε ότι έχουμε κάποιες λειτουργία που ορίζουμε.
Ας πούμε κύβο.
Και αυτό πηγαίνει στο κάτω μέρος της λειτουργίας μας, υπό το κύριο.
>> Αν ξεχάσετε να ενημερώσει τον υπολογιστή για κύβος, όταν ο κύριος προσπαθεί να καλέσει κύβο,
ο υπολογιστής θα είναι, όπως, Θεέ μου.
Δεν έχω καμία ιδέα για το τι σημαίνει αυτό.
Δεν ξέρω τι να κάνω, εδώ.
Έτσι, το πρωτότυπο λέει μην ανησυχείτε.
Πάω να σας πω.
>> Θα έρθει.
Μην φωνάζεις εμένα.
Μην μου δώσει μια σιωπηρή δήλωση του λειτουργία.
Έτσι, αν έχετε αυτό το σφάλμα, ένα πράγμα που θα πάμε να θέλουν να κάνουν
είναι να βεβαιωθείτε ότι έχετε το πρωτότυπο σας.
Εντάξει;
>> Και τελευταίο αλλά όχι λιγότερο σημαντικό, αδήλωτης αναγνωριστικό
είναι κατ 'ουσίαν, όταν προσπαθείτε να χρησιμοποιήσετε μια μεταβλητή που δεν έχουν δηλωθεί.
Έτσι ξαφνικά αρχίζετε λέγοντας σαν ν συν συν.
Και ο υπολογιστής λέει ό, τι είναι ν?
Ποτέ δεν μου είπε ν ήταν ένα πράγμα.
>> Έτσι, ένα πράγμα θα πρέπει να βεβαιωθείτε ότι έχετε έκανε είναι να πείτε στον υπολογιστή το ν είναι.
Έτσι, για παράδειγμα, το η μπορεί να είναι ένας ακέραιος.
Και τότε θα αποφύγετε αυτό το σφάλμα.
Οποιεσδήποτε ερωτήσεις σχετικά με κοινά σφάλματα;
Ναι;
>> ΣΠΟΥΔΑΣΤΩΝ: Για την σιωπηρή δήλωση της λειτουργίας,
θα μπορούσε επίσης να είναι ότι έχετε παραλείψει μία των βιβλιοθηκών που υποτίθεται ότι
να περιλαμβάνει, αντί για το πρωτότυπο;
>> ΧΑΝΑ: Δεξιά, έτσι ώστε η ερώτηση ήταν, θα μπορούσε να σας
επίσης να πάρετε αυτό το σφάλμα εάν ξέχασε να συμπεριλάβει μια βιβλιοθήκη.
>> Φοιτητής: Ναι.
>> ΧΑΝΑ: Απολύτως, διότι κατά τον ίδιο τρόπο
ότι θέλουμε να θέσει τα πρωτότυπά μας πριν από την κύρια λειτουργία,
αν έχουμε μια βιβλιοθήκη, αυτές θα να περιλαμβάνει κυρίως τα πρωτότυπα,
περιλαμβάνουν τους ορισμούς των λειτουργιών.
Μεγάλη ερώτηση.
>> Φοιτητής: Για μια κατάτμηση υπαιτιότητα, θα ήταν αυτό επίσης
συμβεί αν, προσπάθησε εμείς όπως, για να αποκτήσετε πρόσβαση σε μια μεταβλητή,
παρόμοια, σε ένα διαφορετικό [δεν ακούγεται] από ό, τι είχε δηλωθεί;
ΧΑΝΑ: Σίγουρα, έτσι θα είμαστε πάρετε ένα σφάλμα κατάτμησης
αν προσπαθήσαμε να αποκτήσετε πρόσβαση σε ένα μεταβλητή έξω από το πεδίο εφαρμογής;
Ήταν μια ερώτηση;
Φοιτητής: Ναι.
ΧΑΝΑ: Όμορφη.
Έτσι, κατά πάσα πιθανότητα, θα πάμε να πάρετε ένα αδήλωτης σφάλμα αναγνωριστικό αντ 'αυτού.
Γι 'αυτό ακριβώς πρόκειται να πω Δεν ξέρω τι είναι αυτό.
Cool, οτιδήποτε άλλο;
Ναι, εντάξει, όμορφη.
>> Όλα righty, έτσι αναδρομή.
Έτσι ανέφερα ένα ζευγάρι φορές ότι θα μπορούσε να πάρει μια υπερχείλιση στοίβας
επειδή είμαστε καλώντας μας αναδρομική συνάρτηση τόσες πολλές φορές.
Παίρνουμε όλα αυτά στοίβα κουφώματα, μπλα, μπλα, μπλα.
Τι είναι ακόμη μια αναδρομική συνάρτηση;
Λοιπόν, μια αναδρομική συνάρτηση είναι οποιαδήποτε συνάρτηση που καλεί τον εαυτό της.
>> Μερικά πράγματα που πρέπει να γνωρίζετε όταν Οι εκτελεστικές αναδρομική συνάρτηση,
μην ξεχάσετε να συμπεριλάβετε μια βασική περίπτωση.
Μια βασική περίπτωση είναι η σημείο στο οποίο καταλήγουμε.
Έτσι, για παράδειγμα, αν είμαστε κωδικοποίησης, , Λένε, Fibonacci αναδρομικά,
θέλουμε να βεβαιωθείτε ότι όταν παίρνουμε στο ή τον πρώτο αριθμό Fibonacci 0,
Αυτοί οι δύο αριθμοί έχουν αυτές τις περιπτώσεις, επειδή εκείνοι δεν εξαρτώνται
για πράγματα που ήρθαν πριν.
Αυτοί έχουν τις δικές τους αξίες.
>> Μερικά πλεονεκτήματα για την αναδρομή, η οποία είναι μια ερώτημα που έχουμε δει στο παρελθόν κουίζ.
Μπορούν να οδηγήσει σε πιο συνοπτική, κομψό κώδικα.
Και πολλές λειτουργίες, μια πολλές διαφορετικές αλγορίθμων,
στην πραγματικότητα προσφέρονται για αναδρομή.
Ο ορισμός τους θα μπορούσε να είναι επαναληπτικό και της ίδιας.
Έτσι, Fibonacci είναι ένα.
Παραγοντικό είναι ένα.
Συγχώνευση sort είναι ένα-- όλα πράγματα που μπορείτε να δείτε στο.
Εντάξει, οποιεσδήποτε ερωτήσεις;
Ναι;
>> Φοιτητής: Υπάρχει μια περίπτωση γωνία παρόμοιο με το βασικό σενάριο;
Ή είναι ότι για κάποια άλλη το είδος του [δεν ακούγεται];
>> ΧΑΝΑ: Σίγουρα, έτσι, ένα περίπτωση γωνία είναι any-- έτσι
είναι υπόθεση γωνία η ίδια ως βασική υπόθεση;
Μια υπόθεση γωνία είναι κάτι που σας κώδικας θα μπορούσε να συμπεριφέρονται λίγο διαφορετικά.
Περίπτωση Βάση είδος σχετίζεται, σε ότι είναι σαν ειδικές περιπτώσεις
ότι θέλετε να δείτε.
Αλλά η ιδέα μιας βάσης υπόθεσης είναι ότι θέλετε αναδρομική συνάρτηση σας
να σταματήσει σε κάποιο σημείο.
Δεν μπορεί να κρατήσει αυτοαποκαλείται για πάντα.
Πρέπει να σταματήσει σε κάποιο σημείο.
>> ROB: Ναι, συχνά, περιπτώσεις βάσης σας μπορεί να είναι παραδείγματα γωνιά βάσεις.
>> ΧΑΝΑ: Δεξιά, δροσερό, τίποτα;
>> Φοιτητής: Θα μπορούσατε να εξηγήσετε βασίζει λίγο περισσότερο;
Εγώ δεν καταλαβαίνω [Δεν ακούγεται] βάσης περιπτώσεις.
>> ΧΑΝΑ: Από τις περιπτώσεις βάσης;
>> Φοιτητής: Βάση περιπτώσεις, ναι.
>> ΧΑΝΑ: Ω ναι, σίγουρα.
Ας δούμε.
Μήπως έχουμε κιμωλία εδώ;
Ναι, το κάνουμε.
Εντάξει, έτσι πολύ γρήγορα, εγώ θα προσπαθήσει να γράψει αρκετά μεγάλο
ώστε να μπορείτε να δείτε στην οθόνη.
Ας μιλήσουμε για, πραγματικά γρήγορα, Fibonacci.
Γι 'αυτό θα σας δώσει την ακολουθία Fibonacci.
Μπορείτε να αναζητήσετε τον ορισμό.
>> Ουσιαστικά, κάθε αριθμός στην ακολουθία είναι το άθροισμα των δύο προηγούμενων αριθμών.
Εντάξει, οπότε ο τρόπος που μου που μόλις περιγράψαμε Fibonacci,
θα μπορούσατε να ακούσετε την αναδρομή, σωστά;
Όταν είπα κάθε αριθμός είναι το άθροισμα των δύο προηγούμενων αριθμών,
θα μπορούσαμε να πούμε, εντάξει.
Λοιπόν, η νιοστή Fibonacci number-- οπότε ας
ότι έχουμε αυτή τη λειτουργία ονομάζεται fib-- ψεματάκι του ν
πρόκειται να είναι ίσο με το ψεματάκι Ν μείον 1 plus-- συγγνώμη,
θα πηγαίνει στην επόμενη γραμμή πάνω here-- ψεματάκι του Ν μείον 2.
>> Εντάξει, έτσι αυτό λειτουργεί μεγάλο εάν είστε κοιτάζοντας, για παράδειγμα, το μηδέν, ένα,
δύο, τρεις, τέσσερις, πέμπτη αριθμός Fibonacci,
όπου μπορείτε να πείτε ότι 5 είναι ίσο με 2 συν 3.
Αλλά τι εάν είστε στην αρχή;
Τι και αν είστε ακριβώς χτύπημα Αυτές οι δύο πρώτες τιμές;
>> Για να πάρετε αυτό το 1, δεν μπορείτε λένε προσθέσετε τις δύο προηγούμενες,
επειδή αυτό το μηδέν and-- Δεν ξέρω.
Έτσι, σε κάποιο σημείο, θα πρέπει να σταματήσει.
Σε κάποιο σημείο, θα πρέπει να πούμε ότι αυτά δύο έχουν ακριβώς τους δικούς τους ορισμούς.
Ο αριθμός 0 Fibonacci είναι 0.
Και ο πρώτος αριθμός Fibonacci είναι 1.
>> Έτσι, ο τρόπος που θα μπορούσε να κωδικοποιήσει αυτό, Θα έλεγα αν το n είναι μικρότερο από δύο,
στη συνέχεια, μόλις επιστρέψει n.
Και αυτό θα είναι η βάση μου περίπτωση.
Αυτός είναι ο τρόπος που ξέρω για να σταματήσει με μια αναδρομική συνάρτηση.
Είναι σαφές;
Awesome.
Οτιδήποτε άλλο σε αναδρομή;
Όμορφη.
>> Ας γρήγορα να μιλήσουμε για αναζήτησης και ταξινόμησης τρέξει φορές.
Και τότε θα δώσω Davin κάποια ώρα να μιλήσουμε για την κωδικοποίηση παραδείγματα.
Έτσι, εδώ είναι η κύρια αναζήτηση και τα είδη που θα πρέπει να γνωρίζετε.
Guarantee-- Δεν μπορώ να εγγυηθώ, γιατί δεν έχω δει το quiz--
αλλά αυτό έρχεται κουίζ μετά κουίζ μετά κλείστε το.
Έτσι χρησιμοποιήσει σίγουρα αυτό το διάγραμμα.
Όπως, πάρτε αυτό το διάγραμμα.
Βάλτε το επάνω φύλλο εξαπατήσει σας.
Θα είναι ένας ευτυχισμένος άνθρωπος.
>> Αυτό μας λέει τους χρόνους εκτέλεσης κάθε αυτών των είδος και την αναζήτηση αλγορίθμων.
Έτσι γραμμική αναζήτηση, μπορείτε να δείτε τρέξιμο χρόνο, και με την ίδια δυαδική αναζήτηση.
Πηγαίνετε πέρα ​​από ό, τι αλγορίθμων αυτών κάνει, η γενική ιδέα.
Κοιτάξτε μερικές ψευδοκώδικα, αν όχι το ίδιο Κώδικα.
>> Θα δείτε ότι η φούσκα είδος έχει ένα άνω δεσμεύεται στη χειρότερη περίπτωση n τετράγωνο.
Έτσι, αν σειρά μας ήταν εντελώς προς τα πίσω πριν θέλαμε να ταξινομήσετε,
θα λέγαμε ότι αυτό είναι πρόκειται να πάρει n τετράγωνο βήματα.
Αλλά στην καλύτερη περίπτωση, έτσι ώστε η κάτω φράγμα για την καλύτερη περίπτωση
πρόκειται να είναι, αν είναι ήδη τέλεια ταξινομημένο.
Στη συνέχεια, το μόνο που έχουμε να κάνουμε είναι βεβαιωθείτε ότι είναι ταξινομημένο.
Είναι ένα ερώτημα εδώ υπάρχουν;
>> Φοιτητής: Πότε θα θέλετε να χρησιμοποιήσετε το είδος;
Το είδος.
Είμαι απλά περίεργος.
>> ΧΑΝΑ: Πότε θα θέλετε να χρησιμοποιήσετε είδος επιλογής;
Αυτό και μόνο;
Το ένα που είναι n τετράγωνο και στις δύο περιπτώσεις;
>> Φοιτητής: [δεν ακούγεται].
>> ΧΑΝΑ: Έτσι είναι πολύ διαφορετική.
Αν έχετε συγκεκριμένες απαιτήσεις για το πρόγραμμά σας,
όπως τα πράγματα όπως αν εμείς απλά είπε εφαρμόσει ένα search-- sorry--
εφαρμόσει ένα είδος, θα μάλλον θα θέλετε να πάτε
για έναν από αυτούς που έχει μια καλύτερη περίπτωση του Ν,
ή ένα κατώτερο όριο στην καλύτερη περίπτωση του Ν.
Αλλά θα μπορούσε να υπάρχει ορισμένα πράγματα, όπως, ας πούμε,
swaps είναι πραγματικά ακριβό για κάποιο λόγο.
Στη συνέχεια, θα θέλατε να κάνετε bubble sort, γιατί σας
πρέπει να κάνουμε τόσα πολλά swaps, τα πράγματα όπως αυτό.
Κάθε other-- ναι;
>> Φοιτητής: Θα ήταν [δεν ακούγεται] να πω ότι [δεν ακούγεται];
ΧΑΝΑ: Αυτό είναι ένα πράγμα που θα σας πω
αν ψάχνετε σε εφαρμογή.
Ο τρόπος που θα ήθελα πραγματικά σκεφτείτε γιατί είναι n
τετράγωνο είναι ότι πρέπει να τρέξει μέσα από σειρά μας του μήκους n,
κάθε φορά κάνοντας το πολύ, n swaps.
Και εμείς πρέπει να κάνουμε αυτή τη διαδικασία n φορές.
>> Έτσι, όταν έχετε να κάνετε με τα περισσότερα, n swaps και για ν διασχίζει τη συστοιχία,
εκεί πρόκειται να ν τετράγωνο.
Αλλά ναι, αυτό θα αποκαλυφθεί μέσα από αυτό το διπλό για βρόχο,
όπως το ζήτημα asked-- ή ένθετες για βρόχο, πρέπει να πω.
Εντάξει;
>> Και στη συνέχεια, να συγχωνεύσει το είδος, το οποίο Είναι ο ταχύτερος είδος τώρα,
ή ότι έχουμε καλύψει το CS50, γνωρίζουμε ότι το κύριο αλγόριθμος είναι
Αυτή η ιδέα του σπασίματος σε διαλεγμένα κομμάτια και στη συνέχεια,
συγχώνευση μαζί αυτά τα ταξινομημένα κομμάτια.
Και θα μας πάρει log n log n.
Οποιεσδήποτε ερωτήσεις σχετικά με τις αναζητήσεις και είδη πριν το δώσετε;
Ας δούμε.
>> Ω, συνδεδεμένες λίστες.
Συγγνώμη, έχω μία ακόμη θέμα.
Εντάξει, φοβερό, συνδεδεμένες λίστες.
Πρόβλημα με τις συστοιχίες, έχουν ένα σταθερό μέγεθος.
Έτσι, αν δεν ξέρετε πόσο μεγάλο εισόδου σας πρόκειται να είναι,
δεν θέλετε να δημιουργήσετε μια σειρά.
Διότι εάν δημιουργήσουμε ένα συστοιχία που είναι πάρα πολύ μικρή,
θα μπορούσε να τρέξει σε υπερχείλιση.
>> Έτσι, αντ 'αυτού, θα μπορούσαμε να κάνουμε κάτι με συνδεδεμένες λίστες, οι οποίες
μας επιτρέπει να έχουμε μια δυναμικά μεγέθους δομή δεδομένων
που θα μας επιτρέψει να αποθηκεύσετε ένα πιο ευέλικτη ποσότητα των δεδομένων.
Έτσι, σε κάθε κόμβο σε μας συνδεδεμένη λίστα, έχουμε δύο κομμάτια.
Έχουμε την πραγματική αξία που αποθηκεύει.
Έτσι, αυτό είναι το μόνο πράγμα που θα κάνατε βλέπε στον πίνακα, για παράδειγμα.
Και στη συνέχεια, κρατάμε επίσης παρακολουθείτε ένα δείκτη στο επόμενο πράγμα στη μνήμη.
>> Σε αντίθεση με συστοιχίες, η οποία γνωρίζουμε όλοι πρόκειται
να be-- στοιχεία πίνακα είναι όλα ένα μετά την άλλη σε memory-- συνδέονται
κατάλογοι θα μπορούσε να είναι οπουδήποτε στη μνήμη.
Είναι αυθαίρετες τοποθεσίες.
Έτσι, αν ήμασταν σε πραγματικά να πάμε να τους βρείτε, εμείς
Πρέπει να παρακολουθείτε το επόμενο πράγμα στη λίστα μας.
>> Και στη συνέχεια, προκειμένου να γνωρίζουμε όπου ο κατάλογος αυτός στο σύνολό της είναι,
το μόνο που έχουμε να παρακολουθείτε είναι η πρώτο στοιχείο στη συνδεδεμένη λίστα μας.
Και αυτό θα μας επιτρέψει να ακολουθήσει κατευθείαν.
>> Έτσι, αυτό είναι το πώς μπορείτε να ορίσετε μια λειτουργία.
Αυτό είναι μια μεγάλη ευκαιρία να επωφεληθούν από structs.
Επειδή έχετε αυτήν την ιδέα, αλλά, για ένα δεδομένο κόμβο, έχω δύο κομμάτια.
Έχω την ίδια την πραγματική αξία.
Και τότε έχω ένα δείκτη για το επόμενο στοιχείο στην συνδεδεμένη λίστα.
Έτσι βλέπετε, έχουμε έναν ακέραιο n, η οποία πρόκειται να είναι η πραγματική τιμή,
και στη συνέχεια ένα δείκτη σε ένας κόμβος, που ονομάζεται το επόμενο.
Έτσι, αυτό πρόκειται να είναι το επόμενο στοιχείο στη συνδεδεμένη λίστα μας.
Φοιτητής: Ναι;
Έχετε να διευκρινιστεί ότι το αστέρι είναι σαν ένα struct;
>> ΧΑΝΑ: Ναι, έτσι αφού αυτή Είναι σχεδόν σαν ένα είδος,
φαίνεται σαν μια αναδρομική ορισμός σε αυτό το έχουμε
Πρέπει να ξέρετε τι ένας κόμβος είναι μέσα για την εύρεση ενός κόμβου.
Επειδή αυτό δεν συμβαίνει στην πραγματικότητα ξέρετε τι ένας κόμβος είναι εντελώς
μέχρι να φτάσουμε στο τέλος του this-- και μετά από αυτό μπορούμε να το ονομάσουμε μόνο
ένα node-- εσωτερικό αυτού του ορισμού, θα πρέπει να το ονομάσουμε ένα κόμβο struct.
Μεγάλη ερώτηση.
Οτιδήποτε άλλο;
Ναι;
>> Φοιτητής: Γιατί εμείς Πρέπει να πω κόμβο δύο φορές;
Διότι όταν ήμασταν στην [δεν ακούγεται] εμείς απλά έπρεπε να το κάνει στο ερωτηματικό,
αλλά τώρα πρέπει να βρούμε ότι κόμβο struct; [Δεν ακούγεται].
ΧΑΝΑ: Έτσι πιστεύω στο τελευταίο παράδειγμα,
ήμασταν απλά δημιουργώντας οποτεδήποτε ήθελε να χρησιμοποιήσει ένας φοιτητής μετά από αυτό, μπορείτε
έπρεπε να χρησιμοποιήσει struct node-- Είμαι sorry-- μαθητή struct.
Αυτό μας επέτρεψε να, μετά το γεγονός, μόλις χρήση κόμβο προσθέσετε ένα νέο είδος, κατ 'ουσίαν.
Νόημα αυτό;
Γι 'αυτό και θα πρέπει να πάμε πίσω και εξετάσουμε το κωδικό πριν.
Αλλά θα ήθελα να μαντέψει ότι εμείς δεν χρησιμοποιούν typedef.
Και ζητήσαμε από την ερώτηση, γιατί χρειαζόμαστε να χρησιμοποιήσετε typedef;
Typedef μας επιτρέπει να αποφευχθεί η λέξη struct στην αρχή.
Ναι;
Φοιτητής: Τι είδους ερωτήσεις θα καταλήξει
όσον αφορά την άποψη της κόμβους και συνδεδεμένες λίστες;
>> ΧΑΝΑ: Έτσι, ένα πράγμα είναι θα μπορούσαμε να πούμε πως θα μπορούσε να αναζητήσετε μέσα από μια συνδεδεμένη λίστα;
Εντάξει, επειδή είναι μια λίγο πιο περίπλοκη
από ό, τι αν είμαστε αναζήτηση μέσω μιας συστοιχίας.
Μπορούμε απλά να δούμε στοιχείο μηδέν, ένα στοιχείο, το στοιχείο δύο, μπλα, μπλα,
μπλα.
Αν θέλετε να αναζητήσετε μέσω μιας συνδεδεμένη λίστα,
εμείς θα πρέπει ουσιαστικά να ακολουθήσουν αυτό το μικρό λαβύρινθο των δεικτών.
Οπότε ας πάμε στην πραγματικότητα μέσα από αυτό πολύ γρήγορα.
Τι θα μπορούσαμε να κάνουμε σε παραγγείλετε to-- ας πούμε εμείς
θέλουν απλά να επαναλάβει μέσω εξ ολοκλήρου συνδεδεμένη λίστα μας.
Θα ξεκινήσουμε από το κεφάλι.
Και στη συνέχεια, ώστε να να προχωρήσουμε στο επόμενο στοιχείο,
αντί μόνο προσαύξηση κατά ένα όπως θα μπορούσαμε να το περάσει από μια σειρά,
είμαστε πραγματικά πρόκειται να ακολουθήστε το επόμενο δείκτη,
έτσι μπορούμε να βρούμε, όπου το μνήμη το επόμενο στοιχείο είναι.
Έτσι ξέρω ότι αυτό δεν είναι αρκετό για να να λάβει όλα αυτά τώρα,
αλλά θα έχετε αυτές τις διαφάνειες.
Έτσι, μπορείτε να πάτε μέσω Αυτό λίγο πιο αργά.
Αλλά ουσιαστικά, αυτό που θέλουμε να κάνετε είναι να ακολουθήσετε αυτούς τους δείκτες
μέσω το σύνολο της συνδεδεμένης λίστας.
Έτσι, αυτό είναι ένα ερώτημα μπορεί να σας ζητηθεί.
>> Κάτι για να παρατηρήσετε με εισαγωγή, ας πούμε
θέλαμε να θέσει ένα νέο στοιχείο στο μπροστινό μέρος της συνδεδεμένης λίστας μας.
Πρέπει να είμαστε πολύ προσεκτικοί για τη σειρά με την οποία θα
εκ νέου τους δείκτες.
Διότι ας πούμε μόλις είπα ΟΚ.
Κάντε το σημείο το κεφάλι σε αυτό το νέο στοιχείο.
Απλά να το σημείο με 1 Στη συνέχεια, έχουμε ουσιαστικά χάσει το υπόλοιπο του καταλόγου μας,
γιατί δεν θυμάμαι όπου 2 ζωές.
>> Έτσι, έχουμε να κάνουμε με ένα πολύ συγκεκριμένη σειρά.
Πρώτον, έχουμε κάνει το νέο σημείο στοιχείο στο κεφάλι.
Και τότε θα κάνει το κεφάλι σημείο στο νέο στοιχείο.
Ας δούμε λοιπόν τι μοιάζει με arrows-- έτσι απλά.
Έτσι, θα πρέπει πρώτα να έχουν τη νέα σημείο στοιχείο στην παλιά κεφάλι.
Και τώρα, έχουμε το κεφάλι σημείο στο νέο πρώτο στοιχείο.
Οποιεσδήποτε ερωτήσεις με αυτό;
>> Εντάξει εδώ είναι μερικά κωδικό για δεύτερη φορά, κάτι για να δούμε λίγο αργότερα.
Και τώρα θα το κάνω πάνω σε Davin για GDB και μια λίγη πρακτική
κωδικοποίησης σε χαρτί.
Όμορφη.
>> ROB: Και ο Rob.
>> ΧΑΝΑ: Ω, Davin και Rob.
Λυπάμαι.
>> ΜΑΘΗΤΗ: Woo!
>> ROB: Ευχαριστώ.
>> Davin: Θέλετε να πείτε ό, τι πραγματικά γρήγορα;
ROB: Ναι, ναι.
Davin: Όταν είμαι επάνω.
ΟΚ, ενώ ο Rob βάζει το μικρόφωνο, οπότε τι είναι GDB;
Ο καθένας πρέπει να δει GDB σε τάξη και, επίσης, σε ώρες γραφείου.
Και θα πρέπει να το χρησιμοποιεί.
Έτσι τι είναι GDB;
Ο καθένας;
>> ΦΟΙΤΗΤΗΣ: Είναι ένα πρόγραμμα εντοπισμού σφαλμάτων.
>> Davin: Είναι ένα πρόγραμμα εντοπισμού σφαλμάτων.
Και τι δεν θα σας επιτρέψει να κάνετε;
Όπως, γιατί μας αρέσει GDB;
ΜΑΘΗΤΗ: Να επιβραδύνει το πρόγραμμα.
Davin: Δεξιά, ώστε να μπορείτε να περπατήσετε μέσα από αυτό σαν ένα ανθρώπινο ρυθμό.
Και ναι, ποιες είναι μερικές εντολές που μπορείτε να κάνετε;
Λοιπόν, διάλειμμα είναι μάλλον το αγαπημένο σας εντολή.
Διότι αυτό σας επιτρέπει να σπάσει το πρόγραμμα και στην πραγματικότητα με τα πόδια μέσα από αυτό
γραμμή προς γραμμή.
>> Εκτέλεση σας επιτρέπει να εκτελέσετε.
Στη συνέχεια, σαν να περπατήσει μέσα.
Ποιο είναι το επόμενο και μεταξύ βήμα;
Περιμένετε, λένε ότι φωναχτά.
Ήταν σωστή.
>> Φοιτητής: [δεν ακούγεται].
>> Davin: Ναι, φοβερό.
Έτσι, όπως, το επόμενο βήμα και, αν you're-- Ας πούμε ότι έχετε μια λειτουργία που
ορίζουν.
Ας πούμε ότι κάποιοι στην κύρια λειτουργία σας, και είστε ακριβώς το χτύπημα δίπλα, δίπλα,
επόμενο.
Είσαι πραγματικά πρόκειται να εκτελέσει αυτή τη λειτουργία,
αλλά θα πάμε να πηδήξει πάνω από αυτό.
Αν χτυπήσει το βήμα, ή s ή οτιδήποτε άλλο, είστε
πρόκειται να πηδήσει στην πραγματικότητα σε αυτή τη λειτουργία,
και, στη συνέχεια, μπορείτε να χτυπήσει την επόμενη για να δείτε τις διαφορετικές κλήσεις
μέσα σε αυτή τη λειτουργία.
Ναι;
>> Φοιτητής: Υπάρχει κάποιος τρόπος να πηδούν, όπως, κάνει πίσω;
Davin: Τέλος, ναι, τελειώσει μαζί σας πηδήξει έξω.
Έτσι πρόκειται να τελειώσει ότι λειτουργία, και στη συνέχεια να είστε
πρόκειται να είναι πίσω στην κύρια, για παράδειγμα.
Εκτύπωση θα εκτυπωθεί ένα χρόνο.
Κάτι που μπορώ να χρησιμοποιήσω πάντα είναι οθόνη.
Οθόνη θα εκτυπώσετε συνεχώς σε όλη τη διάρκεια
του προγράμματός σας.
>> Για παράδειγμα, αν είστε σε ένα βρόχο for, και σας
θέλουν να δουν πώς κάτι αλλάζει, και δεν θέλετε να, όπως, συνεχώς
να κάνει, όπως εκτύπωση, εκτύπωσης, εκτύπωση, οθόνη
θα εμφανίσει ότι η μεταβλητή συνεχώς, κάθε φορά που θα χτυπήσει την επόμενη.
Και να συνεχίσει.
Έτσι GBD, αυτό είναι το GDB.
>> Φοιτητής: Ποια είναι η μία όπου μπορείτε [δεν ακούγεται];
Davin: Τι είναι αυτό;
>> Φοιτητής: Τι είναι the-- οι τοπικές μεταβλητές.
ROB: Υπάρχει κάτι στην πραγματικότητα σαν ντόπιοι ή κάτι τέτοιο.
Έχω can't--
>> Davin: Θα μπορούσε να είναι κάτι τέτοιο, ναι.
>> ΧΑΝΑ: Στα ντόπιους;
>> Davin: Αυτό είναι.
Αυτό είναι το ένα.
ROB: Όμορφη.
>> Davin: Ναι.
>> Φοιτητής: Τι συνεχίσει να κάνει;
>> Davin: Είναι continues-- έτσι είναι ακριβώς πρόκειται να συνεχίσει τα προγράμματά σας.
Έτσι, αν σπάσει και να χτυπήσει συνεχίζουν, πρόκειται
να τρέξει μόνο το πρόγραμμα αυτό μέχρι χτυπά και πάλι ότι διάλειμμα.
Έτσι, για παράδειγμα, εάν έσπασε σε λειτουργία,
και θα πάμε να κάνουμε, όπως για βρόχου ή κάτι τέτοιο,
και χτυπάτε συνεχίσετε, πρόκειται να να συνεχίσει και να πάει πίσω σε εκείνη διάλειμμα.
Ή δεν υπάρχει διάλειμμα, πρόκειται να να συνεχίσει και να τελειώσει το πρόγραμμα.
>> ROB: ήθελα λοιπόν απλά τρέξτε στάσεις από την πρώτη κιόλας breakpoint
χτυπάτε, αν στη συνέχεια πατήστε συνέχεια, αυτό θα κρατήσει
πηγαίνει μέχρι να είναι το επόμενο σημείο διακοπής.
Και στη συνέχεια να συνεχίσει να πάει στο επόμενο breakpoint.
Davin: Οποιεσδήποτε άλλες ερωτήσεις σχετικά με το GDB;
Πιστεύω λοιπόν ότι στο παρελθόν, θα έχετε ρώτησε τι
GDB είναι και να δώσει μια παράδειγμα κάποια πράγματα που
μπορεί να κάνει με GDB, έτσι Real Simple, αλλά ναι.
Εκεί θα πάτε.
Και κόμβους;
>> ROB: Ναι, έτσι ποια κατεύθυνση θα ήταν;
Φοιτητής: Αυτό ήταν.
Davin: Περιμένετε.
ROB: Αυτός ο τύπος;
Davin: Εκείνο το ένα.
ROB: Αυτός ο τύπος, αχ, δεν είχα συνειδητοποιήσει.
Γι 'αυτό και δεν ήταν σαφές σε ό, τι the-- εγώ δεν κάνω
ξέρω ποιος was-- αλλά το ερώτημα.
Δεν ξέρουμε τι ακριβώς σας ρωτούσαν γι 'αυτό, έτσι απλά
για να ξεκαθαρίσω κάτι.
Έτσι, η πρώτη, όπως είπα και πριν, typedef είστε πάντα χρησιμοποιώντας μόνο
δημιουργήσετε ένα ψευδώνυμο για έναν τύπο.
Έτσι ακριβώς εδώ, το ψευδώνυμο είμαστε δημιουργία είναι για αυτόν τον τύπο struct κόμβο.
>> Έτσι, η πρώτη, αγνοώντας αυτό το κόμβο στο typedef, έτσι ώστε αυτό το struct node σγουρά
συγκρατήσει τα κάτω στο επόμενο σγουρά τιράντες είναι ο τύπος struct node.
Και χρειαζόμαστε σε αυτόν τον κόμβο μέχρι εκεί, γιατί εμείς
Πρέπει να αναφοράς κόμβο εδώ.
Έτσι, με αυτό το είδος των αναδρομικών struct, θα πρέπει να δώσει αυτό το struct ένα όνομα,
ή αλλιώς δεν θα μπορούσε να λένε struct node εδώ.
Ενώ πριν με το μαθητή όταν ήμασταν δακτυλογραφημένες, νομίζω,
εμείς δεν έχουμε να πούμε φοιτητής εκεί, γιατί εμείς
δεν έχουν να πουν struct φοιτητής μέσα στο ίδιο το struct.
Έτσι είναι η αναδρομική ότι μας αναγκάζει να πούμε κόμβο εκεί.
>> Αυτός ο κόμβος είναι απλά το όνομα είμαστε δίνοντας κόμβος για την typedef.
Έτσι, αυτός ο κόμβος δεν είναι το ίδιο με αυτόν τον κόμβο.
Αλλά αυτό struct node είναι η ίδιο με αυτόν τον κόμβο struct.
Davin: Έτσι, κάθε φορά που σας καλούν, όπως, κόμβος στην κύρια λειτουργία σας,
δεν πρόκειται να Πρέπει να πω struct node.
Μπορείτε απλά να πω κόμβο, επειδή κόμβος είναι ένας different-- είναι βασικά
λες, εντάξει.
Αντί να χρειάζεται να καλέσετε struct node στον κώδικά μου,
Απλά θέλω να το μετονομάσετε ως κόμβος για να καταστεί ευκολότερη.
>> ROB: Αν πάντα χρησιμοποιήσετε typedef, τότε αυτό
Είναι το μόνο μέρος που θα πάμε για να έχουν για να δηλώσει μια μεταβλητή με struct node
Star, ναι.
>> Davin: Εντάξει, έτσι το τελευταίο μέρος είναι δύσκολο να διδάξει because--
ROB: Τι;
>> Davin: Επειδή είναι κωδικοποίησης σε χαρτί.
Έτσι, κάθε χρόνο έχουμε κώδικα σε ερωτήσεις χαρτί.
Πιστεύω λοιπόν ότι το περασμένο έτος, 12 από 80 πόντους ήταν κώδικα σε χαρτί.
Έτος πριν από αυτό, 10 από τα 80, χρόνο πριν, 20 από τις 100,
έτσι αρκετά από αυτά.
Έτσι, εσείς πρόκειται να πρέπει να είναι σε θέση να κωδικοποιήσει αυτές τις λειτουργίες με το χέρι.
>> Έτσι σκέφτηκα θα μπορούσε να περάσει μέσα από ένα μερικά από αυτά και να δούμε πώς κάνουν οι άνθρωποι,
το είδος της περπατήσετε μέσα τους αργούς ρυθμούς με τους ανθρώπους.
Έτσι, γενικά, strlen και Atoi έχουν γίνει πολύ δημοφιλή.
Πέρυσι, νομίζω ότι είχαμε GetPositiveInt και RandomInt.
Αλλά Pow, έτσι δύναμη, επίσης, μια θετική πάρα πολύ.
Ας φύγουμε από ίσως ένα ή δύο από αυτά μαζί.
Τι κάνουν οι άνθρωποι θέλουν να δουν;
>> ΜΑΘΗΤΗ: Atoi.
Φοιτητής: Ναι.
Davin: Atoi;
Φοιτητής: [δεν ακούγεται].
Davin: Εντάξει, Πάω να το κάνει στο διοικητικό συμβούλιο.
Έχετε μια προτίμηση αν το κάνω εδώ ή εκεί;
Εκεί, Gabe λέει εκεί.
>> ROB: Και αυτό είναι γενικές σκέψεις για αυτά τα ζητήματα κωδικοποίησης.
Προσπαθήστε να γράψω κάτι.
Μην το αφήσετε κενό.
>> Davin: Ναι.
ROB: Εάν μπορείτε να πάρετε το επιστρέψει τύπου σωστό,
ή ίσως θα μπορούσαμε να το δώσει σε σας, αλλά αν μπορείτε, όπως,
γράψετε τη γενική υπογραφή λειτουργίας, Εάν μπορείτε να πάρετε οι υποθέσεις βάσης σωστή,
ή περιπτώσεις γωνία, ή θυμόμαστε έλεγχος για μηδενική,
εφ 'όσον έχετε κάποια τα πράγματα, τότε ίσως εμείς
μπορεί να σας δώσει ένα ζευγάρι επισημαίνει για το πρόβλημα.
Μην το αφήσετε κενό.
>> Davin: Ναι, και αν είναι μόνο εντελώς
μείνει άναυδοι με το πώς να πραγματικά να μετατραπεί σε κώδικα.
Αν γράψετε ψευδοκώδικα, ότι είναι πάρα πολύ καλή.
Έτσι είναι σαν, αυτό είναι μια ερώτηση έξι σημείων, και να γράψετε τη σωστή ψευδοκώδικα,
θα πάρει τουλάχιστον δύο σημεία.
Έτσι, δεν απλά να τους αφήνουν κενό.
Προσπαθήστε να βάλετε κάτι.
>> ROB: Θα πρέπει να είναι η σωστή ψευδοκώδικας, όμως.
>> Davin: Ναι.
ROB: Έτσι είμαστε γενικά είναι λιγότερο επιεικείς με τα σφάλματα σε ψευδοκώδικα.
Davin: Εντάξει, έτσι εσείς ήθελε να δει Atoi.
Εντάξει, έτσι ακριβώς really-- έτσι ώστε ό, τι θέλετε να κάνετε
Είναι πρόκειται να είναι δοθεί κάποιου είδους αριθμό.
Αλλά αυτός ο αριθμός δεν είναι πρόκειται να είναι ένα int, σωστά;
Τι είναι αυτό που πηγαίνει να είναι;
>> Φοιτητής: [δεν ακούγεται].
>> Davin: Είναι πρόκειται να είναι ένα string, σωστά;
Έτσι, αν σας δόθηκε α string-- ας say--
>> ROB: Θα πρέπει να σηκώσει έναν συντάκτη;
Μπορώ να τραβήξει up--
>> Davin: Ω, θέλετε να το κάνετε on--
>> ROB: Θα προτιμούσατε το διοικητικό συμβούλιο;
>> Davin: Τι θέλετε να κάνετε;
Θέλω να πω, δεν θέλετε να το κάνετε με το χέρι;
Ή μήπως θέλετε να το κάνετε με τον υπολογιστή;
>> ROB: Κάν 'το με το χέρι.
>> Davin: [Γελάει]
ROB: Κάν 'το με το χέρι.
>> Davin: Εντάξει, γι 'αυτό πρόκειται να είναι Atoi.
Έτσι τι είναι it-- εννοώ, θα πιθανόν να δώσει σε αυτό σε εσάς.
Αλλά τι είναι αυτό που πρόκειται να επιστρέψει;
>> ΜΑΘΗΤΗ: Int.
>> Davin: Δεν πρόκειται να επιστρέψει int, σωστά;
So-- δεν θέλω να το κάνω εκεί.
Θα το κάνω εδώ.
>> ROB: Μπορείτε να το τραβήξετε προς τα κάτω και στη συνέχεια σπρώξτε επάνω σε αυτό.
>> Davin: ναι.
[Γέλια] αλλάξει το παιχνίδι.
Εντάξει, γι 'αυτό πρόκειται να είναι int Atoi, και τι είναι αυτό που πρόκειται να πάρει;
Ένα αστέρι char, έτσι απλά μια κορδόνι, το άστρο, όπως αυτό.
>> ROB: Νίκαια αστέρι, ωραία.
Davin: Αυτό μπορεί να μην είναι εκεί, εντάξει.
ROB: Ναι.
Davin: Εντάξει, έτσι το πρώτο πράγμα που θέλετε να do-- μου
Δεν ξέρω αν κάποιος κοίταξε στο solutions-- πρακτική
αλλά αυτό που θα πάμε να θέλετε να κάνετε είναι να είστε
πρόκειται να θέλουν να έχουν ένας βρόχος, επειδή είστε
πρόκειται να θέλουν πραγματικά να βήμα μέσω αυτής της σειράς.
Έτσι helpful-- οπότε ας πούμε θα πάμε σε ένα βρόχο for,
και θα πάμε να το βήμα μέσω κάθε στοιχείο του string.
Πόσο καιρό είναι αυτό;
Πόσες φορές θα πάμε να επαναλάβει ότι για βρόχο;
ΜΑΘΗΤΗ: Sterln;
Davin: Sterln, ναι.
Έτσι, ας πούμε το μήκος int ισούται sterln s.
Και απλά περίεργος, γιατί είναι πάντα το είδος του καλύτερα να το κάνετε αυτό εκτός των βρόχων;
Όπως, γιατί είναι καλύτερα να καλέσετε Αυτή η λειτουργία έξω από ένα βρόχο;
Ακριβώς ελέγξτε μια γρήγορη λογική;
Ναι;
Φοιτητής: έτσι ώστε να μην πρέπει να διατηρήσει τον έλεγχο αυτό.
Μπορείτε απλά [δεν ακούγεται].
>> Davin: Ακριβώς, οπότε ναι, ακριβώς ό, τι είπε.
Έτσι δεν έχουμε να κρατήσει τον έλεγχο αυτό.
Έτσι για παράδειγμα, αν είμαι καλώντας Αυτή η λειτουργία μέσα σε ένα βρόχο,
τότε Πάω να κρατήσει καλώντας Η λειτουργία αυτή πολλές φορές.
Και αυτό πρόκειται να μειωθεί η αποτελεσματικότητα του προγράμματος σας.
Έτσι είναι πάντα χρήσιμο να το δηλώσουν έξω.
>> ROB: Αυτό λέγεται, για οποιοδήποτε από αυτά τα προβλήματα,
λίγο πολύ όσο μπορείτε να πάρετε μια διαλύματος εργασίας, μπορείτε να πάρετε την πλήρη πίστωση.
Γι 'αυτό μην ανησυχείτε αν το σχέδιό σας είναι απολύτως φρικτό.
Θα μπορούσε να μας κάνει να αναστατώσει διαβάζοντας τον κωδικό σας.
Αλλά εφ 'όσον αυτό λειτουργεί, θα πάρετε τα σημεία.
>> Davin: Ναι.
Εντάξει, έτσι ώστε στη συνέχεια Πάω να δηλώνουν κάποια μεταβλητή.
Είναι ακριβώς πρόκειται να καλέσετε άθροισμα int.
Και Πάω να θέσει αυτό ισούται με μηδέν, όπως αυτό.
Και αυτό ακριβώς πρόκειται να είναι ένα σύμβολο κράτησης θέσης.
Έτσι, αυτό πρόκειται να είναι τι Πάω να επιστρέψουν.
Έτσι, Πάω να τελικά άθροισμα επιστρέψει από αυτό το πρόγραμμα.
Έτσι, δεν έχω αυτές τις δύο μεταβλητές.
Έχω μήκος.
Έχω ποσό.
Και τώρα ας άλμα σε κορδόνι μας.
>> Έτσι αφήνει να έχει μας για βρόχο.
Έτσι, τέσσερις int i ισούται με 0 W, ενώ Ι είναι μικρότερο από το μήκος Ι συν συν.
Και now--
ROB: Νίκαια.
Davin: Εντάξει, και τώρα εδώ έρχεται το κρέας του κωδικού μας.
Έτσι μπορείτε πραγματικά να κάνετε Αυτό ουσιαστικά σε μία γραμμή.
Έτσι κάνει κάποιος έχει μια ιδέα από ό, τι θα πάμε να κάνουμε το επόμενο βήμα;
Εντάξει, έτσι αυτό είναι εντάξει.
Έτσι κάνουμε να πω άθροισμα equals-- επιτρέψτε μου να τρέχω αυτή over-- άθροισμα
ισούται με ποσό 10 φορές plus-- είμαστε πρόκειται να πάρει Πιάσε μείον ένα
παραθέτω ένα απόσπασμα 0 γίνει, όπως αυτό.
ROB: Πολύ έξυπνο.
>> Davin: Θρυμματισμένο αυτό.
Εντάξει, έτσι someone-- το πήρα, το πήρα.
Εντάξει, έτσι αυτό είναι σαφώς ανεβαίνει.
Τι σημαίνει αυτό;
Έτσι Ξέρει κανείς τι σημαίνει αυτό;
Μπορεί ο καθένας να δει αυτό;
Όχι, κανείς δεν μπορεί να δει αυτό, εντάξει.
Πάω to--
>> ROB: Πάω να γράψω το τύπο ακριβώς εδώ.
Davin: Εντάξει, Rob πρόκειται να το κάνω στον υπολογιστή, το οποίο είναι διασκεδαστικό.
ROB: Θεέ μου.
Ή δεν θα το κάνω.
Davin: Stand by.
Φοιτητής: Έχω μια ερώτηση.
Davin: Ναι, σίγουρα.
Φοιτητής: [δεν ακούγεται];
Davin: Εντάξει, έτσι είναι στην πραγματικότητα, όπως, μόνο σε γενικές γραμμές,
αν ήταν να θέσει, όπως, στην παρούσα δήλωση int
Ι ισούται με το μήκος 0 κόμμα ισούται sterln, that--
>> Φοιτητής: [δεν ακούγεται].
>> Davin: Αυτό είναι εντάξει, επειδή that--
Φοιτητής: Γιατί θα χρειάζεται καν να χρησιμοποιήσει το μήκος;
Γιατί δεν θα μπορούσε απλά [δεν ακούγεται] sterln s, όπως και όλο το χρόνο [δεν ακούγεται];
>> Davin: Εννοείς εδώ;
>> Φοιτητής: Ναι.
Davin: Επειδή κάθε χρόνο αυτό για loop εκτελείται,
πρόκειται να αξιολογήσει αυτή την κατάσταση.
Φοιτητής: Δεξιά.
Davin: Και αν έχετε sterln εκεί, τότε είναι
Θα πρέπει να καλέσετε στην πραγματικότητα ότι η λειτουργία κάθε φορά.
Έτσι, αντί απλά συγκρίνοντάς το με ένα int,
εσείς πρόκειται να πρέπει να ζητούν μια λειτουργία και στη συνέχεια, συγκρίνοντάς
με την τιμή επιστροφής.
Ναι, έτσι είναι ακριβώς, ναι.
>> Ωραία, εντάξει, έτσι τώρα ο καθένας μπορεί να το δει.
Τι does-- αυτό είναι σαν, αυτό είναι.
Αυτή είναι η μαρμελάδα, εδώ.
Τι σημαίνει αυτό;
Τι κάνω;
Ναι, μια ιδέα;
Ναι;
>> Φοιτητής: Λοιπόν, έτσι ώστε όταν είστε εισέρχονται μια σειρά,
θα πάμε να πηγαίνουν από αριστερά προς τα δεξιά,
έτσι θα πάμε να πηγαίνουν στο δεκαδικά από κάτω από την [δεν ακούγεται].
Davin: Ακριβώς.
Φοιτητής: Έτσι, κάθε μία θα πρέπει να πολλαπλασιάσετε
αυτό που είδαν ως την αξία του int από ο χρόνος που μπορείτε να πάρετε για να μετακινήσετε ότι πάνω από το ένα.
>> Davin: Τέλεια, τέλεια, Έτσι, για παράδειγμα, ας
να πω ότι έδωσε you-- είμαι πρόκειται να γράψω εδώ πέρα.
Όχι, δεν είμαι.
Πάω να γράψω εδώ πέρα.
Ας πούμε ότι σας έδωσα 76, σωστά;
Ας πούμε ότι έχετε δώσει 76.
Αυτό είναι ένα string για να αρχίσει με, εντάξει;
>> Έτσι, το μήκος είναι αυτό;
2, σωστά;
Άθροισμα είναι 0.
Στη συνέχεια άλμα σε μας για βρόχο.
Εντάξει, η πρώτη επανάληψη της αυτό, τι είναι αυτό που πρόκειται να είναι;
Είναι πρόκειται να είναι άθροισμα είναι 0.
Έτσι συνοψίσω φορές 10 0.
Αυτό είναι χωρίς νόημα.
Τότε τι κάνει αυτό;
Φοιτητής: [δεν ακούγεται].
>> Davin: Δεν πρόκειται να γυρίσει ότι χαρακτήρα σε έναν ακέραιο αριθμό, σωστά;
Είναι κάτι σαν με σας πρόβλημα set-- αυτό light--
είναι το είδος του όπως και με πρόβλημα που να Visioneer.
Είσαι ασχολούνται με τιμές ASCII.
Έτσι, αν σας δίνω, όπως, ένα επτά, αλλά είναι ένας χαρακτήρας,
και θέλετε να ξέρετε, Εντάξει, τι ψηφίο είναι αυτό;
Ναι, θα μπορούσε, ναι.
Έτσι, ποιο ψηφίο είναι αυτό;
Θα μπορούσατε να αφαιρέσουμε 0 από αυτό, αλλά σας πρέπει να αφαιρέσετε το 0, το χαρακτήρα.
>> Και όταν κάποιοι άνθρωποι να σκοντάψει επάνω, από όπου και αν
όπως, εντάξει, καλά, εγώ πρέπει να ξέρω οι τιμές ASCII για αυτό το κουίζ;
Όχι, σίγουρα δεν Πρέπει να γνωρίζετε το ASCII
αξίες της, όπως, πεζά α, κεφαλαίο A, μηδέν.
>> ROB: Δεν υπάρχει κανένας λόγος να ποτέ βάλει αυτό στο σκονάκι.
>> Davin: Σίγουρα δεν κάνουμε σπαταλάτε το χώρο σας με αυτό.
Μπορείτε να literally-- ακριβώς αντί του λέγοντας 48, όπως μέχρι
εκεί, που είναι ισοδύναμο με λέγοντας μία, μία απόστροφο,
όπως αυτό, ακριβώς το ίδιο.
>> ROB: Θα μπορούσε σχεδόν να σκεφτείτε της ως if-- Θεό, έχω ανάγκη μου,
oops-- θα μπορούσε σχεδόν να το σκέφτομαι αυτό σαν να έχουμε κάτι σαν αυτό το hash
ορίζουν 0 ως 48.
Αυτό δεν θα λειτουργήσει.
Αλλά σκεφτείτε το σαν ενιαίο απόσπασμα 0 ενιαία προσφορά, και για όλους τους χαρακτήρες.
Σκεφτείτε το σαν μια σταθερά που αντιπροσωπεύει αυτήν την τιμή ASCII.
>> Davin: Ναι.
Εντάξει, έτσι η πρώτη φορά μέσα, έτσι με 76-- έτσι η πρώτη φορά μέσα,
Αυτό είναι ακριβώς ο χαρακτήρας 7 μείον το χαρακτήρα 0,
και αυτά είναι επτά integers-- καλά, εκείνα
είναι επτά θέσεις μακριά από κάθε άλλο στο διάγραμμα ASCII ή οτιδήποτε άλλο.
Έτσι, ότι πρόκειται να επιστρέψει μια int του 7.
Μέχρι τώρα, ποσό ίσο με 7.
>> Εντάξει, καλά, ας άλμα σε αυτό για το βρόχο και πάλι.
Εντάξει, τώρα είναι άθροισμα 10 φορές.
Έτσι είστε αποτελεσματικά μετακίνηση του 7 προς τα αριστερά.
Μήπως αυτό έχει νόημα;
Είσαι αποτελεσματικά κινείται προς τα αριστερά.
>> Και τότε θα add-- αυτό πρόκειται να είναι μείον 6 0.
Αυτό είναι 6.
Γι 'αυτό πρόκειται να είναι 70 συν 6.
76, που είναι ο αριθμός σας.
Έτσι, ανεξάρτητα από το ποιος είναι ο αριθμός Σας έδωσα, είναι αργά μόνο
πρόκειται να μετατοπίσει τις μεγαλύτερες τιμές προς τα αριστερά, 1 παράγοντα 10
κάθε φορά στο βρόχο for, και στη συνέχεια να προσθέσετε ως αναγκαία.
>> Στο πίσω μέρος;
Φοιτητής: Δεν έχουμε να κάνουμε οποιοδήποτε έλεγχο στο πρόγραμμα;
>> ROB: Έτσι, όσον αφορά τον έλεγχο ισχύει και για το πρόγραμμα,
θα σας πω αρκετά πολύ αυτό που πρέπει να ελέγξετε.
Αν δεν σας πω τίποτα, τότε γενικά
υποθέσουμε ότι έχετε να ελέγξετε τα περισσότερα πράγματα.
Όπως ίσως, ακριβώς για να είναι ασφαλής, μπορείτε θα πρέπει πιθανώς να ελέγξει hey, είναι s null;
Στη συνέχεια, δεν έχω ιδέα τι να επιστρέψουν.
Αλλά θα σας πω Αυτό το είδος του πράγματος.
0, δεν ξέρω.
>> Davin: Και γιατί θα θέλετε να επανεξετάσει εάν s ισούται με μηδενική;
Φοιτητής: [δεν ακούγεται].
Davin: Λόγω του κάρβουνου αστέρων.
Είναι ένας δείκτης.
Έτσι, ένα απολύτως αποδεκτό δήλωση, θα μπορούσα να πω, εντάξει,
s ισούται με μηδενική, διότι θα μπορούσε να είναι ένας δείκτης για την τιμή null.
Έτσι, κάθε φορά που έχετε δείκτες στο δρόμο σας σε αυτό, όπως,
μάλλον θα πρέπει να ελέγξετε.
Διότι, αν δεν έχετε ελέγξει ότι, και τότε μπορείτε στη συνέχεια να πάει σε σας για βρόχο,
και είστε doing-- τρέχω προς τα κάτω.
Εξορμώ κάτω.
>> ROB: Συγγνώμη, αυτό είναι όλο.
>> Davin: Και έτσι, όπως, εάν είναι άκυρη, και στη συνέχεια θα
κάνουμε αυτό, τι λάθος θα πας να πάρετε;
Φοιτητής: Θα πάμε να πάρετε μια σειρά σφαλμάτων.
Davin: Θα πάμε για να ρυθμίσετε υπαιτιότητα, σωστά, επειδή είστε
προσπαθούν να δείκτη σε μηδενική.
Έτσι θα πάμε να προσπαθήσουμε να δείκτη στη μνήμη που δεν σας ανήκουν.
Έτσι αυτό, εάν αυτό είναι μηδενική, και μπορείτε να το κάνετε αυτό, θα σας κύκλο.
>> ROB: Πιστεύω, επίσης, για την εξέταση στην οποία ζητήσαμε αυτήν την ερώτηση, σας λέμε
ότι μπορείτε να υποθέσετε απλά είναι ένας θετικός αριθμός.
Επειδή Atoi αναμένεται επίσης να χειριστεί τους αρνητικούς αριθμούς,
έτσι θα πρέπει να ειδική περίπτωση.
Γεια σου, είναι ο πρώτος χαρακτήρας μια παύλα, οπότε, ΟΚ,
Τώρα αυτό είναι ένα αρνητικό ακέραιο.
Θα σας πω αυτά τα είδη των πραγμάτων.
Θα σας πω ό, τι χρειάζεστε για να χειριστεί.
Davin: Ναι.
Έτσι, είμαι βέβαιος ότι κάποιοι άνθρωποι μπορεί να have-- αν άρχισε να ψάχνει στο παλιό εξετάσεις,
Έχετε δει sterln.
Αυτό είναι ένα δημοφιλές ένα.
Και νομίζω ότι στην sterln, θα έπρεπε να κάνει τον έλεγχο αυτό για μηδενική, η επιστροφή
0 ή κάτι τέτοιο.
Όπως, θα έπρεπε να ελέγξει για μηδενική.
Και αν δεν το έκανε, ότι ήταν το σημείο μακριά στο κουίζ.
Έτσι κι αλλιώς, κάνει τους πάντες αισθάνεται εντάξει με Atoi;
Μήπως κάποιος θέλει να πάει πάνω από τα μέρη και πάλι;
ROB: Ω ναι, νομίζω Μπορούμε επίσης να σας πω
μπορούμε να υποθέσουμε ότι τα πάντα is-- ότι από όπου και αν πραγματικά την πληκτρολόγηση ενός αριθμού,
ότι δεν έχετε να ανησυχείτε για, όπως, επιστολές είναι στη σειρά, έτσι.
Davin: Ναι.
Ναι;
Φοιτητής: Μπορείτε να πάτε πάνω από μία φορά, όταν
μπορείτε να χρησιμοποιήσετε διπλά εισαγωγικά και μόνη προσφορά;
>> Davin: Σίγουρα, οπότε είναι διπλά εισαγωγικά, πολύ Με απλά λόγια, είναι διπλά εισαγωγικά είναι χορδές.
Έτσι, αν διπλασιαστεί απόσπασμα τίποτα, αυτό είναι ένα string.
Έτσι, όπως, αν είχα αυτό το 0 εδώ, και το έκανα αυτό, αυτό είναι ένα string.
Αυτό δεν είναι ένας χαρακτήρας.
Έτσι, δεν μπορώ να βρω αυτή την τιμή σε ASCII μου γράφημα, επειδή είναι ένα string, ναι.
>> Εντάξει, οποιεσδήποτε άλλες ερωτήσεις;
Ναι;
>> Φοιτητής: Έτσι έχετε ήδη απαντηθεί αυτό,
αλλά όπως, όταν στην πραγματικότητα είμαστε γράφοντας αυτό στο κουίζ,
θέλεις να μας για να γράψει με καθέτους μηδενικά [δεν ακούγεται];
Davin: Όχι.
Το ερώτημα ήταν θα πρέπει να έχετε θέσει ένα κάθετο μέσα από τα μηδενικά
για να δείξει αν είναι μηδενικά;
Όχι, δεν θα το καταλάβω.
Ναι, ευχαριστώ, είναι καλοί.
Εντάξει, κάτι άλλο;
Μήπως κάποιος θέλει to-- έτσι νομίζω έχουμε τρέξει λίγο την πάροδο του χρόνου.
Θέλετε να δείτε ένα άλλο, ή;
Φοιτητής: RandomInt.
>> Davin: RandomInt, ΟΚ, ακριβώς.
Οπότε ας κάνουμε RandomInt.
Θα το κάνω εδώ.
Έτσι RandomInt είναι στην πραγματικότητα πολύ πιο απλή.
Νομίζω Atoi είναι ίσως το πιο δύσκολο ένα ότι έχουμε ζητήσει κατά τα προηγούμενα έτη.
Φοιτητής: [δεν ακούγεται].
>> Davin: Τι;
ROB: Βλέπω αν είναι το είδος των ορατών από εδώ.
Davin: Είναι;
ROB: Δεν νομίζω ότι είναι going-- νομίζω πρόκειται να τρέξει προς τα δεξιά.
Davin: Εντάξει, έτσι θα το κάνω αυτό.
Και τότε μπορείτε απλά να βάλετε στην οθόνη.
>> ROB: Εντάξει.
>> Davin: Θέλετε να γραφέας μου;
>> ROB: Ναι.
>> Davin: Νίκαια.
Εντάξει, μπορώ να διαγράψει αυτό;
>> Φοιτητής: Ναι.
>> Davin: Αυτό είναι τόσο δύσκολο.
(Τραγούδι) Κάνεις τι κάνετε.
Και κάνει ό, τι δεν κάνουμε.
Εντάξει.
>> Εντάξει, αν θυμάμαι καλά, στις το κουίζ η RandomInt ήταν σαν,
Εντάξει, Πάω να σας δώσω δύο αριθμούς, σαν ένα και β.
Και θέλω να μου δώσεις ένα RandomInt μεταξύ αυτών των αριθμών.
Έτσι RandomInt πρόκειται να λάβει δύο numbers--
τόσο RandomInt-- και είναι πρόκειται να επιστρέψει έναν int.
>> Έτσι ποια είναι η τιμή επιστροφής;
Σας είπα μόλις.
Int, σωστά;
Όπως αυτό, και τότε είναι πρόκειται να πάρει δύο ints.
Έτσι, πρόκειται να λάβει int α και β int, όπως αυτό.
Έτσι τι είναι RandomInt πρόκειται να κάνω είναι ότι πρόκειται
να επιστρέψει κάποια τυχαία τιμή μεταξύ αυτών των δύο τιμών.
Γι 'αυτό πρόκειται να είναι μεγαλύτερη από ένα, λιγότερο από το β.
Πιστεύω λοιπόν ότι ίσως μπορούμε να υποθέσουμε ότι a είναι η μικρότερη από τις δύο τιμές.
Έτσι, αν έχουμε να κάνουμε με τυχαιότητα, τι λειτουργίας
έχουμε δει ότι μας δίνει τυχαία πράγματα;
ΜΑΘΗΤΗ: Drand.
Davin: Drand, ακριβώς.
Έτσι θα πάμε να πιθανώς θέλετε να χρησιμοποιήσετε drand σας.
Έτσι, μπορείτε να πείτε int τυχαία, και θα απλώς να πω ότι ισούται με 0 τώρα.
Και όπου και αν θα πάμε να πούμε, Εντάξει, τυχαία ίσων drand 48.
Και τι σημαίνει αυτή η επιστροφή;
Τι σημαίνει αυτή η λειτουργία σας δώσει;
>> Φοιτητής: Μεταξύ 0 και 1.
>> Davin: Ναι, μεταξύ 0 και 1.
Έτσι πρόκειται να be--
>> ROB: Και αυτό is-- νομίζω θα σας πω αυτό.
Όπως, μπορείτε να χρησιμοποιήσετε drand 48.
Μπορείτε να το επιβεβαιώσετε αυτό στο παρελθόν εξετάσεις.
Αλλά πιθανότατα θα σας πω μπορεί να χρησιμοποιήσει drand 48, η οποία
επιστρέφει ένα float μεταξύ 0 και 1.
>> Davin: Ναι, ναι, είμαι αρκετά σίγουρος για τις εξετάσεις
αυτό σας λέει πιθανώς θέλετε να χρησιμοποιήσετε drand, ναι.
Έτσι, πρόκειται να επιστρέψει κάποια τιμή μεταξύ 0 και 1.
Και τότε τι είσαι πρόκειται να θέλετε να κάνετε;
Λοιπόν, θέλετε να πολλαπλασιάσετε by-- περιμένετε, νομίζω ότι είναι σαν αυτό, συγγνώμη.
Θα κάνω ακριβώς αυτό.
Δεν ξέρω.
>> Έτσι, β μείον ένα.
Γιατί, λοιπόν, β μείον ένα;
Έτσι, ας πούμε drand σας δίνει πίσω μια int-- ΟΚ, θα το κάνω μόνο το υπόλοιπο,
έτσι συν ένα.
Έτσι τι does-- Υ είναι β μείον ένα.
Ας πούμε ότι drand σας δίνει πίσω η μέγιστη τιμή θα μπορούσε ενδεχομένως να
να σας δώσει.
Τι είναι αυτό πρόκειται να είναι;
Φοιτητής: 1.
>> Davin: 1, σωστά;
Επομένως, εάν αυτό είναι 1, και είστε πολλαπλασιάζοντάς την με β μείον ένα,
καλά, αυτό είναι ακριβώς το διαφορά μεταξύ του μείον Α
Και αν στη συνέχεια προσθέστε ότι πίσω σε ένα, ότι είναι ό, τι;
Είναι ουσιαστικά b.
Μήπως αυτό έχει νόημα;
>> Φοιτητής: Ναι.
>> Davin: Έτσι, αν αυτό είναι το μέγιστο εκτιμούν ότι θα μπορούσε ενδεχομένως να είναι,
πρόκειται να είναι 1.
Και τότε αυτό είναι ακριβώς το διαφορά μεταξύ των δύο.
Προσθέστε σε ένα, οπότε αυτό είναι πρόκειται να επιστρέψει τυχαία.
Και στην περίπτωση γωνία που drand σας δίνει πίσω 1,
τυχαία απλά θα πρέπει να αποτελεσματικά να b.
Αλλά αυτό είναι το μέγιστο που μπορεί να είναι.
Έτσι, αν πρόκειται να είναι μικρότερη από ότι, ας πούμε ότι, όπως του 0,9,
έτσι ώστε στη συνέχεια 0,9 φορές β μείον α πρόκειται να είναι μικρότερη
από τη διαφορά μεταξύ β μείον ένα.
>> Και στη συνέχεια, αν προσθέσετε ότι σε μια, τότε η τιμή αυτή είναι
πρόκειται να είναι μεγαλύτερο από ένα, διότι θέλετε να προσθέσετε κάτι πάνω σ 'αυτό,
αλλά πρόκειται να είναι μικρότερη από ό, τι β.
Έτσι θα πάμε να πάρετε ένα τυχαίο αριθμό, επειδή είστε καλώντας drand.
Και πως η rand, ότι τυχαίος αριθμός είναι πρόκειται να είναι κάπου ανάμεσα σε ένα
και b.
Μήπως αυτό έχει νόημα;
>> ROB: Ακριβώς για να το βάλετε στο σκυρόδεμα αριθμούς, έτσι
ας υποθέσουμε ότι θέλουμε να πάρει ένα τυχαίο αριθμό μεταξύ 7 και 10.
Έτσι, β μείον ένα είναι η σειρά μας.
Έτσι, υπάρχει μια σειρά από τρία αριθμούς που θέλουμε να διαλέξετε.
Και στη συνέχεια πολλαπλασιάζοντας ότι μεταξύ 0 και 1 1,
αν αυτό τότε μας δίνει some-- ας πούμε ότι μας δίνει 1.5.
>> Στη συνέχεια, 1.5, θέλουμε να πάμε 7 έως 10.
Έτσι, 1,5 συν 7 μας φέρνει πίσω σε 7 έως 10 γκάμα μας.
Και τότε είμαστε το αποθηκεύει στο εσωτερικό της ένας ακέραιος αριθμός, έτσι ώστε να περικοπεί μέχρι 8.
Και τότε θα επιστρέψουν μόλις αυτό.
Έτσι, β μείον ένα είναι η σειρά μας.
α μετατοπίζεται επάνω σε αριθμούς ότι θέλουμε μέσα σε αυτό το εύρος.
Έτσι, μεταξύ 7 και 10, και στη συνέχεια εμείς μπορεί να επιστρέψει ό, τι μπορούμε να καταλήξουμε με.
>> Davin: Ναι, ωραία.
>> ROB: Ευχαριστούμε.
>> Davin: Ναι, τι συμβαίνει;
>> Φοιτητής: Μήπως να τρέξει σε οποιοδήποτε είδος του Σφάλματα ASCII όταν we're-- αν drand είναι
επιστροφή ενός πλωτήρα [δεν ακούγεται].
>> ROB: Έτσι ακριβώς όπως ο Rob είπε, γιατί τυχαία δεν είναι int,
έτσι drand θα είναι ένα πλωτήρα.
Έτσι και τότε πολλαπλασιάζει τα έξω.
Και μπορείτε να πάρετε κάποια το είδος των αριθμών float.
Και στη συνέχεια, πρόκειται να περικόψει.
>> Φοιτητής: Εντάξει.
Davin: Ναι.
ROB: Και αν ο compiler ήταν να προειδοποιήσει Σας περίπου, όπως, απώλεια της ακρίβειας,
μόλις ρίξει έναν int στην εκεί, και στη συνέχεια να είναι καλό.
Davin: Ναι;
>> Φοιτητής: Θα έχει το ίδια πιθανότητα να πάρει,
όπως, β ή [δεν ακούγεται];
>> ROB: Έτσι is-- είμαι πραγματικά wondering-- είναι RandomInt υποτίθεται
να είναι μια σειρά από ένα σε λιγότερο από ό, τι β;
Όπως, αν είναι μεταξύ 7 και 10, ποιες είναι οι δυνατότητες;
7, 8, και 9, ή 7, 8, 9, 10;
Davin: ξεχάσω.
Σχετικά με το πρόβλημα set--
>> ROB: Νομίζω ότι είναι 7, 8, 9.
>> Davin: Λέει συγκεκριμένα κάποιου χωρίς αποκλεισμούς και ένα αποκλειστικό.
>> ROB: Ναι.
>> Davin: Αλλά εγώ don't-- είμαι not--
>> ROB: Έτσι νομίζω ότι αυτά είναι δεν περιλαμβάνεται, στην οποία περίπτωση,
υπάρχει μια ίση πιθανότητα 7, 8, και 9.
Δεν υπάρχει καμία πιθανότητα 10.
Davin: Ναι;
Φοιτητής: Έχω μια ερώτηση.
Θέλουμε να ορίσουμε μια συνάρτηση Δεν επιστρέφει μία τιμή, αλλά μια σειρά.
Τότε τι θα ήταν η σύνταξη μετά την επιστροφή;
>> Davin: Εντάξει, έτσι τότε θα would-- μετά την επιστροφή;
Ας πούμε ότι έχετε είχε δηλώσει μια σειρά κάπου εκεί πάνω.
Στη συνέχεια, θα επιστρέψει μόνο το όνομα της συστοιχίας.
>> Φοιτητής: Εντάξει, σας ευχαριστώ.
Στη συνέχεια, μόλις επιστρέψει με a--
Davin: Ω περιμένετε, τόσο θλιβερό.
Το ερώτημα ήταν πώς δεν θα επιστρέψει έναν πίνακα.
>> ROB: Αν και αυτό δεν θα μπορούσε να είναι μια σειρά που δηλώθηκαν
στη στοίβα ή κάτι τέτοιο.
Θα πρέπει να είναι κάτι malloced, επειδή malloc
είναι το πώς μπορείτε να πάρετε γύρω αυτόματη κατανομή της μνήμης.
>> Davin: Ναι.
ROB: Πώς μπορείτε να πάρετε γύρω από την τοπική εμβέλεια.
>> Davin: Αλλά θα κάνατε μόλις επιστρέψει name-- της
>> Φοιτητής: [δεν ακούγεται] δεν είναι ένα τιμή, για παράδειγμα, δύο αριθμούς, έτσι
[Δεν ακούγεται].
>> Davin: Δεν μπορείτε να επιστρέψετε πολλαπλές αριθμό.
Δεν μπορείτε, όπως, return--
>> Φοιτητής: Μίλησα για την επιστροφή ένας πίνακας ή κάτι τέτοιο.
>> Davin: Ναι, έτσι το ερώτημα είναι μπορώ να επιστρέψω πολλαπλές τιμές.
Δεν μπορείτε να επιστρέψετε πολλαπλές τιμές.
Δεν μπορείτε, όπως, επιστρέφει μια συνέχεια β επιστρέψει ή κάτι τέτοιο.
Επειδή μετά την επιστροφή σας, μπορείτε επιστρέφει από τη λειτουργία.
Και στη συνέχεια η λειτουργία γίνεται, και όπως Rob είπε, είναι στη στοίβα.
>> Έτσι όλοι ότι η μνήμη παίρνει μόνο επιστρέφονται στον υπολογιστή.
Όλα ξεχνιέται, βασικά.
Έτσι, εάν θέλετε να επιστρέψετε πολλαπλές τιμές, θα πρέπει να επιστρέψει έναν πίνακα,
Και ο τρόπος που το κάνουμε αυτό είναι mallocing.
Και τότε θα επιστρέψει x τέτοιο.
Βασικά, μπορείτε απλά να επιστρέψετε το όνομα.
Και όταν επιστρέψετε κάτι σαν αυτό, είστε
στην πραγματικότητα δεν επιστρέφει την τιμή.
>> Ας πούμε ότι έχετε αποθηκεύσει οι τιμές σε μία συστοιχία.
Δεν είσαι πραγματικά επιστροφή αυτών των αξιών.
Όπως, αν επέστρεψα έναν int, είμαι επιστρέφουν πραγματικά αντίγραφα των αξιών.
Αλλά αν μου ήταν να επιστρέψει κάτι σαν αυτό,
Είμαι επιστρέφει μια αναφορά σε αυτές τις τιμές.
Έτσι είμαι επιστρέφει, ουσιαστικά, ένα διεύθυνση μνήμης με τις τιμές.
Μήπως αυτό έχει νόημα;
Φοιτητής: Ναι.
Davin: Νίκαια.
Ναι;
>> Φοιτητής: Όταν είσαι χρησιμοποιώντας drand εδώ,
δεν θα πρέπει να θέσει srand πριν από αυτό;
>> Davin: Όχι, όχι, εγώ δεν σκέφτομαι έτσι.
>> ROB: Ναι, έτσι έχετε να πω τίποτα για την srand;
Η προεπιλογή του ποτέ δεν λέει srand σε όλα είναι να κάνει ακριβώς srand του null.
Έτσι drand για δική του βούληση το έργο της.
Και θα τους σπόρους αυτόματα με η τρέχουσα ώρα, είναι ό, τι χρησιμοποιεί.
Davin: Ναι;
Φοιτητής: Σας [δεν ακούγεται] με τους αριθμούς;
Davin: Ναι, μπορείτε.
Φοιτητής: Έτσι, θα μπορούσατε λένε, όπως, 4 φορές 2.
Το πράγμα είναι, δεν μπορεί να αναλάβει τότε ένας int είναι τέσσερα byte.
Η only--
>> Davin: Θέλω να πω, για το κουίζ μπορείτε.
[Γέλια]
>> ROB: λλ, όχι.
Davin: Ναι, ναι μπορείτε.
Αν σας ρωτήσω πόσο μεγάλη είναι η int είναι, δεν μπορείτε να είστε, όπως, τέσσερις ή οκτώ.
ROB: Ω, οπότε αν η ερώτημα είναι συγκεκριμένα,
παρόμοια, αν αυτό είναι ένα πρόβλημα κωδικοποίησης, θα πρέπει να πω το μέγεθος του int.
Αν πρόκειται για ένα τραπέζι, ή λέει πόσα bytes,
δεν θα πρέπει να συμπληρώσετε το μέγεθος των ints.
>> ΦΟΙΤΗΤΕΣ: [Γελάει]
>> Davin: Δεξιά, τόσο γιατί είναι το μέγεθος του int σημαντικό εδώ;
Έτσι, όπως, αν θα πάμε σε 32-bit επεξεργαστή ή κάτι τέτοιο,
τότε πρόκειται να είναι τέσσερα byte.
Αλλά για ορισμένα από τα νεότερα πράγματα, θα μπορούσε να είναι αυτό;
Θα μπορούσε να είναι οκτώ, σωστά;
Έτσι this-- αν απλά σκληρά κωδικό τέσσερα, Στη συνέχεια σε ορισμένες μηχανές, αυτό θα λειτουργήσει.
Μερικά μηχανήματα, δεν θα λειτουργήσει.
Αλλά αν στο κουίζ είμαστε όπως το πόσο μεγάλο είναι ένα int;
Βάλτε τέσσερις.
ROB: Δεξιά.
Davin: Ναι;
Φοιτητής: Έτσι, γιατί είμαστε δηλώνοντας [Δεν ακούγεται] μέσα σε μια συνάρτηση,
θα πρέπει να βάλουμε 3 εντός αυτής της λειτουργίας;
Ή μπορούμε να το χρησιμοποιήσουμε έξω;
Davin: Μπορείτε να το χρησιμοποιήσετε εκτός του εν λόγω λειτουργία.
Έτσι ζητάει δωρεάν.
>> Φοιτητής: Χάστε κομμάτι από όπου [δεν ακούγεται].
>> ROB: Ω, το ελεύθερο δεν happen-- ότι είναι μέρος της μαγείας της malloc
είναι ότι δεν είστε περιορίζεται στην τοπική εμβέλεια.
Έχετε τον πλήρη έλεγχο πόσο καιρό μεταβλητές σας ζήσει.
Έτσι καλούμε malloc εδώ, θα μπορούσε είναι μια εντελώς ξεχωριστή λειτουργία.
Θα μπορούσε να είναι 10 ώρες αργότερα ότι μπορούμε επιτέλους να καλέσετε δωρεάν.
>> Davin: Έτσι, για παράδειγμα, όπως, ένα ζευγάρι εβδομάδες από τώρα, όταν τελικά
κάνει λεξικό ορθογράφος σας psets, θα πάμε
να έχουν κάποια λειτουργία που δημιουργεί τους τόνους των κόμβων.
Έτσι είστε mallocing τόνους κόμβων σε αυτή τη λειτουργία.
Και στη συνέχεια σε ένα ξεχωριστή λειτουργία, είστε
πρόκειται να θέλουν να ελευθερώσει όλους αυτούς τους κόμβους.
Έτσι, μπορείτε κυριολεκτικά να περάσει ελευθερώσει ένα δείκτη, έτσι ώστε μια διεύθυνση μνήμης
σε ό, τι malloced.
Και αυτό θα είναι μια χαρά.
Δεν χρειάζεται να απελευθερώσει, παρόμοια, στην ίδια λειτουργία.
Ναι;
>> Φοιτητής: Έτσι, ένα malloc μεταβλητή [δεν ακούγεται] έξω;
Είναι ότι αυτό που λέτε;
Davin: Περιμένετε, το λες αυτό;
Λυπάμαι.
>> Φοιτητής: Αν μια μεταβλητή malloc μπορεί να είναι δωρεάν σε οποιοδήποτε σημείο του κώδικα,
τότε μπορούν να προσπελαστούν οπουδήποτε στον κώδικα;
Μπορείς να τους κρατήσει τις τοπικές;
>> Davin: Ω, ρώτησε, όπως, η μεταβλητή, like--
>> ROB: Έτσι θα πρέπει ακόμα να έχουν κάποιο είδος της αναφοράς
Για να μπλοκάρετε την malloc της μνήμης.
Μέχρι εδώ, γυρίζουμε x.
Φοιτητής: Αχ.
ROB: Αν δεν είχαμε επιστρέψει x εδώ, και αυτό ήταν απλώς άκυρη,
τότε δεν θα είχαμε πρόσβαση σε ο δείκτης που malloced,
και αυτό είναι που διέρρευσαν μνήμη.
>> Φοιτητής: Εντάξει.
>> Davin: Έτσι, όπως, ας πούμε ότι έχετε έχουν αυτό, όπως, ακριβώς εδώ.
ROB: Όχι.
Davin: Στην κύρια λειτουργία μου, δεν μπορώ απλά καλέστε αυτό το x και να είναι, όπως, ΟΚ,
σε αυτή τη λειτουργία, το έκανα αυτό.
>> ROB: Δεξιά.
>> Davin: Έτσι, Πάω να καλέσετε x στο, όπως, κύρια ή κάτι τέτοιο.
Δεν μπορείτε να το κάνετε αυτό.
Θα πάμε για να επιστρέψει κάτι.
Αλλά ό, τι πρόκειται να επιστρέψει;
Θα πάμε για να επιστρέψει μια διεύθυνση μνήμης.
Και επειδή μπορείτε να επιστρέψετε μια μνήμη διεύθυνση, που μπορεί να προσπελαστεί αλλού.
Οποιεσδήποτε άλλες ερωτήσεις;
Ναι;
>> Φοιτητής: Είναι το παραπάνω λειτουργία είναι επιταγή για [δεν ακούγεται];
>> Davin: Γιατί δεν χρειάζεται να το κάνουμε αυτό;
Φοιτητής: [δεν ακούγεται].
Davin: Επειδή είστε Δεν mallocing τίποτα.
Έτσι είναι not-- ναι, είναι Δεν ήθελε ένα string s.
Είναι ένας δείκτης κάπου.
Αυτά είναι απλώς αξίες.
Φοιτητής: Εντάξει.
Davin: Ναι.
Οτιδήποτε άλλο;
ROB: Ναι;
Φοιτητής: Αλλά όταν [δεν ακούγεται];
>> ROB: Έτσι, προκειμένου να απελευθερώσει το μνήμη, θα λέγαμε εδώ.
Έτσι το x είναι δείκτης μας να το μπλοκ της μνήμης.
Έχουμε απελευθερώσει αυτού του pointer.
Και εμείς δεν θα το κάνουμε αναγκαστικά εδώ.
Μπορούμε να το κάνουμε οπουδήποτε.
Αλλά σας καλούν μόνο δωρεάν κάτι που malloc επιστρέφει.
Έτσι, malloc, εδώ, επέστρεψε αυτό που αποθηκεύονται στο X.
Έτσι, μπορούμε να καλέσετε δωρεάν στο x.
Όλες οι τελευταίες ερωτήσεις;
>> Davin: Κάποιες τελευταίες ερωτήσεις;
Ναι;
>> Φοιτητής: Συγγνώμη, μπορεί να σας εξηγήσουν εκ νέου γιατί θα απελευθερώσει εκεί;
Γιατί [δεν ακούγεται];
>> Davin: Γιατί εδώ;
>> Φοιτητής: Ναι, όπως αμέσως μετά.
Davin: Πιθανότατα δεν θέλουν μια δωρεάν εδώ.
ROB: πιθανότατα δεν θα.
Davin: Ναι, ότι αυτό θα κάνει τίποτα.
Αυτό θα ήταν, όπως, τη δημιουργία μνήμη, κάνουμε πράγματα για αυτό,
και αμέσως μετά να ξεχάσουμε αυτό, ναι.
>> ROB: Αλλά θα μπορούσαμε να κάνουμε, όπως, εδώ για κάποιο λόγο.
Θα μπορούσαμε να πούμε int αστέρων y ισούται με συστοιχία επιστροφής.
Κάνετε κάποια πράγματα με y, ίσως να εκτυπώσετε τα περιεχόμενα.
Και τότε, επιτέλους, είμαστε γίνει.
Μπορούμε να ελευθερώσει y.
Φοιτητής: [δεν ακούγεται].
Davin: Θα πρέπει να μετακινηθείτε προς τα κάτω;
Ευχαριστώ.
ROB: Νίκαια.
>> Davin: Εντάξει, αυτό είναι όλο.
ROB: Εντάξει, καλά.
Καλή τύχη.
>> Davin: Αν έχετε απορίες, επικοινωνήστε μαζί μας.
Καλή τύχη.