1 00:00:00,000 --> 00:00:03,388 >> [Παίζει μουσική] 2 00:00:03,388 --> 00:00:05,104 3 00:00:05,104 --> 00:00:06,020 DOUG LLOYD: Εντάξει. 4 00:00:06,020 --> 00:00:07,680 Συνεργασία με μονά μεταβλητών είναι αρκετά διασκεδαστικό. 5 00:00:07,680 --> 00:00:09,500 Τι γίνεται όμως αν θέλετε να εργαστείτε με πολλές μεταβλητές, 6 00:00:09,500 --> 00:00:12,760 αλλά δεν θέλουμε να έχουμε ένα σωρό διαφορετικά ονόματα που πετούν γύρω μας κώδικα; 7 00:00:12,760 --> 00:00:15,980 Σε αυτή την περίπτωση, είναι συστοιχίες πρόκειται να έρθει πραγματικά εύχρηστο. 8 00:00:15,980 --> 00:00:19,510 Οι πίνακες είναι μια πραγματικά θεμελιώδη δεδομένα δομή για κάθε γλώσσα προγραμματισμού 9 00:00:19,510 --> 00:00:20,260 ότι θα χρησιμοποιήσετε. 10 00:00:20,260 --> 00:00:24,450 Και είναι πραγματικά, πραγματικά χρήσιμο, Ειδικότερα, όπως θα δούμε, στην CS 50. 11 00:00:24,450 --> 00:00:27,870 >> Χρησιμοποιούμε συστοιχίες για να κρατήσει τιμές του ίδιου τύπου δεδομένων 12 00:00:27,870 --> 00:00:29,830 σε συνεχόμενες θέσεις μνήμης. 13 00:00:29,830 --> 00:00:32,430 Δηλαδή, είναι ένα τρόπο που μπορούμε ομάδα 14 00:00:32,430 --> 00:00:35,430 μια δέσμη των ακεραίων μαζί μνήμης ή ένα μάτσο χαρακτήρες 15 00:00:35,430 --> 00:00:38,270 ή επιπλέει στη μνήμη πραγματικά κοντά μεταξύ τους και την εργασία 16 00:00:38,270 --> 00:00:41,930 με αυτούς, χωρίς να χρειάζεται να δοθεί σε κάθε ένα δικό του μοναδικό όνομα του, η οποία μπορεί να 17 00:00:41,930 --> 00:00:44,500 επίπονο μετά από λίγο. 18 00:00:44,500 --> 00:00:48,130 >> Τώρα, ένας τρόπος για να αναλογίσετε συστοιχίες είναι να σκεφτούμε το τοπικό ταχυδρομείο σας 19 00:00:48,130 --> 00:00:49,000 γραφείο για ένα δευτερόλεπτο. 20 00:00:49,000 --> 00:00:51,820 Έτσι βήμα μακριά από τον προγραμματισμό και απλά κλείστε τα μάτια σας 21 00:00:51,820 --> 00:00:54,120 και να απεικονίσει στο μυαλό σας τοπικό ταχυδρομείο σας. 22 00:00:54,120 --> 00:00:57,160 Συνήθως, στις περισσότερες μετα γραφεία, υπάρχει μια μεγάλη τράπεζα 23 00:00:57,160 --> 00:01:00,490 μια ταχυδρομικές θυρίδες στον τοίχο. 24 00:01:00,490 --> 00:01:03,510 >> Ένας πίνακας είναι ένα τεράστιο μπλοκ της συνεχούς μνήμης, 25 00:01:03,510 --> 00:01:06,120 με τον ίδιο τρόπο που ένα e-mail τράπεζα στο ταχυδρομείο σας 26 00:01:06,120 --> 00:01:11,230 είναι ένας μεγάλος χώρος για το τοίχωμα των ταχυδρομείων. 27 00:01:11,230 --> 00:01:15,750 Οι συστοιχίες έχουν χωριστεί σε μικρές, πανομοιότυπα σε μέγεθος μπλοκ του χώρου, 28 00:01:15,750 --> 00:01:19,930 καθένα από τα οποία λέγεται ένα στοιχείο, σε τον ίδιο τρόπο που το τοίχωμα της θέσης 29 00:01:19,930 --> 00:01:23,840 το γραφείο έχει χωριστεί σε μικρά, πανομοιότυπα σε μέγεθος μπλοκ του χώρου, 30 00:01:23,840 --> 00:01:27,560 το οποίο ονομάζουμε ταχυδρομική θυρίδα. 31 00:01:27,560 --> 00:01:31,650 Κάθε στοιχείο της συστοιχίας μπορεί αποθηκεύουν ένα ορισμένο ποσό των δεδομένων, 32 00:01:31,650 --> 00:01:37,540 ακριβώς όπως κάθε ταχυδρομικής θυρίδας είναι σε θέση να κατέχει ένα ορισμένο ποσό του ταχυδρομείου. 33 00:01:37,540 --> 00:01:41,540 >> Τι μπορεί να αποθηκευτεί σε κάθε στοιχείο του η συστοιχία είναι μεταβλητές του ίδιου δεδομένων 34 00:01:41,540 --> 00:01:45,300 τύπου, όπως int ή char, απλά όπως στην ταχυδρομική θυρίδα σας, 35 00:01:45,300 --> 00:01:47,300 μπορούν να χωρέσουν μόνο τα πράγματα παρόμοιου τύπου, 36 00:01:47,300 --> 00:01:50,430 όπως είναι τα γράμματα ή μικρές συσκευασίες. 37 00:01:50,430 --> 00:01:55,050 Τέλος, μπορούμε να έχουμε πρόσβαση σε κάθε στοιχείο του η συστοιχία άμεσα από τον αριθμό ευρετηρίου, 38 00:01:55,050 --> 00:01:59,770 ακριβώς όπως μπορούμε να έχουμε πρόσβαση ταχυδρομείο μας κουτί γνωρίζοντας τον αριθμό της θυρίδας του. 39 00:01:59,770 --> 00:02:02,750 Ας ελπίσουμε, ότι η αναλογία σας βοηθά να πάρει το κεφάλι σας 40 00:02:02,750 --> 00:02:05,540 γύρω από την ιδέα των πινάκων με analogizing σε κάτι άλλο 41 00:02:05,540 --> 00:02:08,400 ότι είστε πιθανώς ήδη εξοικειωμένοι με. 42 00:02:08,400 --> 00:02:13,182 >> Στην C, είναι τα στοιχεία μιας συστοιχίας ευρετήριο ξεκινώντας από το 0 και όχι από το 1. 43 00:02:13,182 --> 00:02:14,390 Και αυτό είναι πολύ σημαντικό. 44 00:02:14,390 --> 00:02:18,530 Και στην πραγματικότητα, αυτός είναι ο λόγος που, στην CS 50, και γιατί οι επιστήμονες υπολογιστών συχνά 45 00:02:18,530 --> 00:02:22,150 θα μετρήσει από 0, είναι εξαιτίας του πίνακα Γ 46 00:02:22,150 --> 00:02:24,660 ευρετηρίαση, η οποία ξεκινά πάντα σε 0. 47 00:02:24,660 --> 00:02:28,730 Έτσι, αν μια συστοιχία αποτελείται από n στοιχεία, το πρώτο στοιχείο του εν λόγω συστοιχίας 48 00:02:28,730 --> 00:02:32,960 βρίσκεται στο ευρετήριο 0, και το τελευταίο στοιχείο της συστοιχίας 49 00:02:32,960 --> 00:02:36,610 βρίσκεται στο ευρετήριο n μείον 1. 50 00:02:36,610 --> 00:02:43,160 Και πάλι, αν υπάρχει n στοιχεία σε μας πίνακα, ο τελευταίος δείκτης είναι n μείον 1. 51 00:02:43,160 --> 00:02:46,820 >> Έτσι, εάν σειρά μας έχει 50 στοιχεία, τα πρώτο στοιχείο βρίσκεται στο ευρετήριο 0, 52 00:02:46,820 --> 00:02:51,060 και το τελευταίο στοιχείο βρίσκεται στο ευρετήριο 49. 53 00:02:51,060 --> 00:02:53,940 Δυστυχώς, ή ευτυχώς, ανάλογα με την προοπτική σας, 54 00:02:53,940 --> 00:02:56,170 C είναι πολύ επιεικής εδώ. 55 00:02:56,170 --> 00:02:59,480 Δεν θα σας αποτρέψει από βγείτε έξω από τα όρια του πίνακα σας. 56 00:02:59,480 --> 00:03:03,080 Θα μπορούσατε να αποκτήσετε πρόσβαση στο μείον 3 στοιχείο του πίνακα σας 57 00:03:03,080 --> 00:03:07,400 ή το 59ο στοιχείο του πίνακα σας, αν σειρά σας έχει μόνο 50 στοιχεία. 58 00:03:07,400 --> 00:03:11,060 Δεν θα σταματήσει το πρόγραμμά σας από κατάρτιση, αλλά κατά το χρόνο εκτέλεσης, 59 00:03:11,060 --> 00:03:14,350 που ενδέχεται να αντιμετωπίσετε ένα επίφοβη σφάλμα κατάτμησης 60 00:03:14,350 --> 00:03:17,460 αν αρχίσουν να έχουν πρόσβαση μνήμης ότι είναι έξω από τα όρια του τι 61 00:03:17,460 --> 00:03:19,260 σας ζήτησε το πρόγραμμά σας για να σας δώσει. 62 00:03:19,260 --> 00:03:21,250 Έτσι, δεν πρέπει να είστε προσεκτικοί. 63 00:03:21,250 --> 00:03:23,120 >> Τι κάνει μια σειρά Δήλωση μοιάζει; 64 00:03:23,120 --> 00:03:26,940 Πώς μπορούμε να κωδικοποιήσει μια σειρά στην ύπαρξη όπως κωδικοποιούμε οποιαδήποτε άλλη μεταβλητή; 65 00:03:26,940 --> 00:03:31,250 Υπάρχουν τρία μέρη σε μια σειρά declaration-- έναν τύπο, ένα όνομα, 66 00:03:31,250 --> 00:03:31,880 και ένα μέγεθος. 67 00:03:31,880 --> 00:03:34,088 Αυτό είναι πολύ παρόμοιο με ένα δήλωση μεταβλητών, η οποία 68 00:03:34,088 --> 00:03:36,970 είναι απλά ένας τύπος και ένα όνομα, το στοιχείο είναι το μέγεθος 69 00:03:36,970 --> 00:03:39,860 Η ειδική περίπτωση για μια σειρά, επειδή θα έχουμε μια δέσμη από αυτά 70 00:03:39,860 --> 00:03:41,830 Την ίδια στιγμή. 71 00:03:41,830 --> 00:03:45,560 >> Έτσι, ο τύπος είναι τι είδους μεταβλητή που Θέλετε κάθε στοιχείο του πίνακα να είναι. 72 00:03:45,560 --> 00:03:47,150 Μήπως θέλετε σε μια σειρά ακεραίων; 73 00:03:47,150 --> 00:03:49,010 Στη συνέχεια, πληκτρολογήστε τα στοιχεία σας θα πρέπει να είναι int. 74 00:03:49,010 --> 00:03:51,760 Θέλετε να είναι ένα σειρά από διπλά ή επιπλέει; 75 00:03:51,760 --> 00:03:54,545 Τύπος δεδομένων θα πρέπει να είναι διπλά ή επιπλέουν. 76 00:03:54,545 --> 00:03:56,420 Το όνομα είναι αυτό που θέλετε να καλέσετε σειρά σας. 77 00:03:56,420 --> 00:04:00,970 Τι θέλετε να ονομάσετε αυτό το γιγαντιαίο Τράπεζα της ακέραιους αριθμούς ή πλωτήρες ή χαρακτήρες 78 00:04:00,970 --> 00:04:03,250 ή διπλασιάζεται, ή ό, τι έχετε; 79 00:04:03,250 --> 00:04:04,700 Τι θέλετε να το ονομάσετε; 80 00:04:04,700 --> 00:04:06,110 Αρκετά αυτονόητα. 81 00:04:06,110 --> 00:04:08,610 >> Τέλος, το μέγεθος, το οποίο πηγαίνει μέσα σε αγκύλες, 82 00:04:08,610 --> 00:04:12,180 είναι πόσα στοιχεία θα κάνατε σαν τον δικό σας πίνακα για να περιέχει. 83 00:04:12,180 --> 00:04:13,530 Πόσοι ακέραιοι θέλετε; 84 00:04:13,530 --> 00:04:15,570 Πόσες άρματα θέλετε; 85 00:04:15,570 --> 00:04:19,070 >> Έτσι, για παράδειγμα, int βαθμοί φοιτητών 40. 86 00:04:19,070 --> 00:04:26,020 Αυτό δηλώνει μια σειρά που ονομάζεται Student βαθμούς, το οποίο αποτελείται από 40 ακεραίων. 87 00:04:26,020 --> 00:04:28,180 Αρκετά αυτονόητα, ελπίζω. 88 00:04:28,180 --> 00:04:29,330 Εδώ είναι ένα άλλο παράδειγμα. 89 00:04:29,330 --> 00:04:31,560 Διπλό τιμές μενού 8. 90 00:04:31,560 --> 00:04:34,610 Αυτό δημιουργεί μια σειρά που ονομάζεται Τιμές μενού, το οποίο αποτελείται 91 00:04:34,610 --> 00:04:38,300 χώρο στη μνήμη για οκτώ δίκλινα. 92 00:04:38,300 --> 00:04:42,000 93 00:04:42,000 --> 00:04:45,750 >> Αν νομίζετε ότι κάθε στοιχείου από μια σειρά από στοιχεία τύπου τύπου, 94 00:04:45,750 --> 00:04:49,860 Έτσι, για παράδειγμα, ένα μόνο στοιχείο της μια σειρά τύπου int, με τον ίδιο τρόπο που 95 00:04:49,860 --> 00:04:52,770 Θα σκεφτώ άλλη μεταβλητή τύπου int, 96 00:04:52,770 --> 00:04:56,440 όλες οι γνωστές λειτουργίες που θα συζητήθηκε προηγουμένως πτητικής λειτουργίας 97 00:04:56,440 --> 00:04:58,270 βίντεο θα κάνει αίσθηση. 98 00:04:58,270 --> 00:05:01,620 Έτσι, εδώ, θα μπορούσαμε να δηλώσετε έναν πίνακα της Booleans ονομάζεται Truthtable, 99 00:05:01,620 --> 00:05:05,590 το οποίο αποτελείται από 10 δωμάτια για Booleans. 100 00:05:05,590 --> 00:05:09,650 >> Και τότε, όπως ακριβώς θα μπορούσαμε απλά να αναθέσει μια τιμή σε οποιαδήποτε άλλη μεταβλητή του τύπου 101 00:05:09,650 --> 00:05:13,470 Boolean, θα μπορούσαμε να πούμε κάτι όπως Truthtable αγκύλη 102 00:05:13,470 --> 00:05:18,040 2, το οποίο είναι το πώς θα υποδείξει, το οποίο στοιχείο του πίνακα αλήθειας; 103 00:05:18,040 --> 00:05:20,350 Το τρίτο στοιχείο της πίνακας αλήθειας, γιατί θυμηθείτε, 104 00:05:20,350 --> 00:05:21,800 μετράμε από το 0. 105 00:05:21,800 --> 00:05:25,690 Έτσι, αυτό είναι το πώς θα υποδείξει η τρίτο στοιχείο του πίνακα αλήθειας. 106 00:05:25,690 --> 00:05:28,680 Truthtable 2 ισούται με ψευδείς, ακριβώς όπως θα μπορούσαμε να declare-- 107 00:05:28,680 --> 00:05:33,560 ή θα μπορούσαμε να εκχωρήσετε, μάλλον, οποιαδήποτε Μεταβλητή Boolean τύπου να είναι ψευδής. 108 00:05:33,560 --> 00:05:35,050 >> Μπορούμε επίσης να το χρησιμοποιήσετε σε συνθήκες. 109 00:05:35,050 --> 00:05:39,000 εάν (truthtable 7 == αληθής), δηλαδή, 110 00:05:39,000 --> 00:05:42,370 εάν το όγδοο στοιχείο του Truthtable είναι αλήθεια, 111 00:05:42,370 --> 00:05:46,760 ίσως θέλουμε να εκτυπώσετε ένα μήνυμα στο χρήστη, printf ("ΑΛΗΘΙΝΟ! n") ;. 112 00:05:46,760 --> 00:05:50,290 Αυτό μας αναγκάζει να πούμε Truthtable 10 ισούται αλήθεια, σωστά; 113 00:05:50,290 --> 00:05:53,590 Λοιπόν, μπορώ, αλλά είναι αρκετά επικίνδυνο, γιατί θυμηθείτε, 114 00:05:53,590 --> 00:05:56,260 έχουμε μια σειρά από 10 Booleans. 115 00:05:56,260 --> 00:06:02,340 Έτσι, ο υψηλότερος δείκτης ότι η compiler μας έχει δώσει είναι 9. 116 00:06:02,340 --> 00:06:06,010 >> Αυτό το πρόγραμμα θα καταρτίσει, αλλά αν κάτι άλλο στη μνήμη 117 00:06:06,010 --> 00:06:09,110 υπάρχει όπου θα Αναμένουμε Truthtable 10 για να πάει, 118 00:06:09,110 --> 00:06:13,980 θα μπορούσαν να υποστούν σφάλμα κατάτμησης. Εμείς θα μπορούσε να ξεφύγει με αυτό, αλλά σε γενικές γραμμές, 119 00:06:13,980 --> 00:06:14,710 αρκετά επικίνδυνο. 120 00:06:14,710 --> 00:06:19,759 Έτσι, αυτό που κάνω εδώ είναι νόμιμη C, αλλά δεν είναι απαραίτητα η καλύτερη κίνηση. 121 00:06:19,759 --> 00:06:22,300 Τώρα, όταν δηλώνετε και προετοιμάσει μια σειρά ταυτόχρονα, 122 00:06:22,300 --> 00:06:23,960 υπάρχει πράγματι μια όμορφη ειδική σύνταξη που εσείς 123 00:06:23,960 --> 00:06:26,250 μπορεί να χρησιμοποιήσει για να γεμίσει τον πίνακα με τιμές εκκίνησης. 124 00:06:26,250 --> 00:06:30,130 Μπορεί να πάρει δυσκίνητη να δηλώσετε έναν πίνακα μεγέθους 100, 125 00:06:30,130 --> 00:06:33,430 και, στη συνέχεια, πρέπει να πω, στοιχείο 0 ισούται με αυτό? στοιχείο 1 ισούται με αυτό? 126 00:06:33,430 --> 00:06:34,850 στοιχείο 2 ισούται με αυτό. 127 00:06:34,850 --> 00:06:36,370 Ποιο είναι το νόημα, έτσι δεν είναι; 128 00:06:36,370 --> 00:06:39,470 >> Αν είναι μια μικρή συστοιχία, θα θα μπορούσε να κάνει κάτι τέτοιο. 129 00:06:39,470 --> 00:06:44,360 Bool truthtable 3 ισούται με ανοιχτή σγουρά στήριγμα και στη συνέχεια κόμμα 130 00:06:44,360 --> 00:06:48,060 διαχωρίζουν τον κατάλογο των στοιχείων ότι θέλετε να βάλετε στη συστοιχία. 131 00:06:48,060 --> 00:06:50,520 Στη συνέχεια, κλείστε τα σγουρά στήριγμα ερωτηματικό. 132 00:06:50,520 --> 00:06:53,910 Αυτό δημιουργεί μια σειρά από Μέγεθος τρεις ονομάζεται Truthtable, 133 00:06:53,910 --> 00:06:56,090 με στοιχεία ψευδή, αλήθεια, και η αλήθεια. 134 00:06:56,090 --> 00:06:59,270 Και στην πραγματικότητα, η συγκεκριμενοποίηση σύνταξη που έχω εδώ είναι 135 00:06:59,270 --> 00:07:03,350 ακριβώς το ίδιο με το να το ατομική σύνταξη στοιχείο παρακάτω. 136 00:07:03,350 --> 00:07:09,380 Αυτές οι δύο τρόποι κωδικοποίησης θα παράγει την ίδια ακριβώς σειρά. 137 00:07:09,380 --> 00:07:11,740 >> Ομοίως, θα μπορούσαμε να επαναλάβει πάνω από όλα τα στοιχεία 138 00:07:11,740 --> 00:07:15,400 ενός πίνακα με τη χρήση ενός βρόχου, η οποία, Πράγματι, είναι πολύ συνιστάται 139 00:07:15,400 --> 00:07:16,790 στο σπίτι της άσκησης. 140 00:07:16,790 --> 00:07:20,720 Πώς μπορείτε να δημιουργήσετε μια σειρά από 100 ακέραιοι, όπου 141 00:07:20,720 --> 00:07:23,477 Κάθε στοιχείο του πίνακα είναι ο δείκτης της; 142 00:07:23,477 --> 00:07:26,560 Έτσι, για παράδειγμα, έχουμε μια συστοιχία 100 ακέραιοι, και το πρώτο στοιχείο, 143 00:07:26,560 --> 00:07:27,790 θέλουμε να δώσουμε 0. 144 00:07:27,790 --> 00:07:29,810 Στο δεύτερο στοιχείο, θέλουμε να δώσουμε 1. 145 00:07:29,810 --> 00:07:33,319 Στο τρίτο στοιχείο, θέλουμε να βάλει 2? και ούτω καθεξής και ούτω καθεξής. 146 00:07:33,319 --> 00:07:35,360 Αυτό είναι ένα πραγματικά καλό στο σπίτι άσκηση για να το κάνουμε αυτό. 147 00:07:35,360 --> 00:07:38,190 148 00:07:38,190 --> 00:07:40,220 >> Εδώ, δεν φαίνεται όπως πάρα πολλά έχουν αλλάξει. 149 00:07:40,220 --> 00:07:44,170 Να σημειωθεί όμως ότι στο μεταξύ η αγκύλες, αυτή τη φορά, 150 00:07:44,170 --> 00:07:45,830 Έχω πράγματι παραληφθεί στον αριθμό. 151 00:07:45,830 --> 00:07:48,000 Εάν χρησιμοποιείτε αυτό το πολύ ειδικές συγκεκριμενοποίηση 152 00:07:48,000 --> 00:07:50,380 σύνταξη, για να δημιουργήσετε ένα σειρά, που πραγματικά δεν το κάνετε 153 00:07:50,380 --> 00:07:53,491 Πρέπει να δείξει το μέγεθος της συστοιχίας των προτέρων. 154 00:07:53,491 --> 00:07:55,740 Ο compiler είναι αρκετά έξυπνος να ξέρετε ότι μπορείτε πραγματικά 155 00:07:55,740 --> 00:07:58,980 θέλετε μια σειρά μεγέθους 3, γιατί βάζετε τα τρία στοιχεία 156 00:07:58,980 --> 00:08:00,640 στα δεξιά του ίσον. 157 00:08:00,640 --> 00:08:04,140 Αν είχε βάλει τέσσερα, θα πρέπει Σας δίνεται ένα πίνακα αληθείας του μεγέθους τέσσερα? 158 00:08:04,140 --> 00:08:06,270 και ούτω καθεξής και ούτω καθεξής. 159 00:08:06,270 --> 00:08:09,380 >> Arrays δεν περιορίζονται σε ένα μόνο διάσταση, η οποία είναι αρκετά δροσερό. 160 00:08:09,380 --> 00:08:12,000 Μπορείτε πραγματικά να έχετε όσες πλευρά προσδιοριστικά όπως εσείς επιθυμείτε. 161 00:08:12,000 --> 00:08:16,470 Έτσι, για παράδειγμα, εάν θέλετε να δημιουργήσετε ένα συμβούλιο για το παιχνίδι θωρηκτό, το οποίο, 162 00:08:16,470 --> 00:08:20,910 Αν έχετε παίξει ποτέ, είναι ένα παιχνίδι που είναι έπαιξε με μανταλάκια στο 10 από 10 πλέγμα, 163 00:08:20,910 --> 00:08:22,450 μπορείτε να δημιουργήσετε έναν πίνακα σαν αυτό. 164 00:08:22,450 --> 00:08:26,030 Θα μπορούσαμε να πούμε Bool βραχίονα πλατεία θωρηκτό 10 165 00:08:26,030 --> 00:08:29,590 κλειστή πλατεία αγκύλη βραχίονα 10 κλειστά αγκύλη. 166 00:08:29,590 --> 00:08:32,710 >> Και στη συνέχεια, μπορείτε να επιλέξετε να ερμηνεύουν αυτό στο μυαλό σας ως το 10 167 00:08:32,710 --> 00:08:35,576 με 10 πλέγμα των κυττάρων. 168 00:08:35,576 --> 00:08:37,409 Τώρα, στην πραγματικότητα, στην μνήμη, κάνει πραγματικά μόνο 169 00:08:37,409 --> 00:08:42,440 εξακολουθούν να αποτελούν στοιχείο 100, μονοδιάστατου πίνακα. 170 00:08:42,440 --> 00:08:46,070 Και αυτό, στην πραγματικότητα, ισχύει και για αν έχουν τρεις διαστάσεις ή τέσσερις ή πέντε. 171 00:08:46,070 --> 00:08:49,420 Είναι πραγματικά ακριβώς έχει πολλαπλασιάσει όλα τα indices-- 172 00:08:49,420 --> 00:08:51,130 ή το σύνολο του μεγέθους specifiers-- μαζί, 173 00:08:51,130 --> 00:08:53,480 και μπορείτε απλά να πάρετε μια μονοδιάστατη σειρά αυτού του μεγέθους. 174 00:08:53,480 --> 00:08:57,090 >> Αλλά από την άποψη της οργάνωσης και οπτικοποίηση και την ανθρώπινη αντίληψη, 175 00:08:57,090 --> 00:08:59,240 μπορεί να είναι πολύ πιο εύκολο να συνεργαστεί με ένα πλέγμα 176 00:08:59,240 --> 00:09:02,980 αν εργάζεστε σε ένα παιχνίδι όπως Tic-tac-toe ή θωρηκτό, 177 00:09:02,980 --> 00:09:05,179 ή κάτι τέτοιο. 178 00:09:05,179 --> 00:09:06,970 Είναι μια μεγάλη αφαίρεση, αντί 179 00:09:06,970 --> 00:09:09,340 να σκεφτούμε μια Tic-Tac-Toe σκάφους, σύμφωνα με μια γραμμή από εννέα 180 00:09:09,340 --> 00:09:13,810 πλατείες ή ένα θωρηκτό ως γραμμή 100 τετράγωνα. 181 00:09:13,810 --> 00:09:16,010 Ένα 10 από 10 πλέγμα ή τρεις από τρεις δίκτυο είναι πιθανώς 182 00:09:16,010 --> 00:09:17,225 πολύ πιο εύκολο να αντιληφθεί. 183 00:09:17,225 --> 00:09:19,820 184 00:09:19,820 --> 00:09:22,280 >> Τώρα, κάτι πραγματικά σημαντικό για τους πίνακες. 185 00:09:22,280 --> 00:09:25,950 Μπορούμε να αντιμετωπίζουν κάθε άτομο στοιχείο της συστοιχίας ως μεταβλητή. 186 00:09:25,950 --> 00:09:27,700 Είδαμε ότι νωρίτερα όταν ήμασταν ανάθεση 187 00:09:27,700 --> 00:09:32,240 η τιμή True σε ορισμένες Booleans ή τους δοκιμές σε υποθετικοί. 188 00:09:32,240 --> 00:09:35,960 Αλλά δεν μπορούμε να θεραπεύσουμε ολόκληρο ντύνει τους εαυτούς τους ως μεταβλητές. 189 00:09:35,960 --> 00:09:41,760 Δεν μπορούμε, για παράδειγμα, να ορίσετε μια συστοιχία σε μια άλλη συστοιχία χρησιμοποιώντας την εκχώρηση 190 00:09:41,760 --> 00:09:42,930 χειριστή. 191 00:09:42,930 --> 00:09:44,640 Δεν είναι νομικά Γ 192 00:09:44,640 --> 00:09:47,920 >> Αν θέλουμε, για ό, τι example-- θα κάνουμε σε αυτό το παράδειγμα 193 00:09:47,920 --> 00:09:50,200 θα ήταν να αντιγράψετε μια συστοιχία σε μια άλλη. 194 00:09:50,200 --> 00:09:53,810 Αν θέλουμε να το κάνουμε αυτό, μπορούμε πραγματικά πρέπει να χρησιμοποιήσετε ένα βρόχο για να αντιγράψετε 195 00:09:53,810 --> 00:09:56,550 κάθε επιμέρους στοιχείο, ένα κάθε φορά. 196 00:09:56,550 --> 00:09:58,700 Ξέρω ότι είναι λίγο χρονοβόρα. 197 00:09:58,700 --> 00:10:04,022 >> Έτσι, για παράδειγμα, αν είχαμε αυτά τα δυο γραμμές κώδικα, θα ήταν αυτό το έργο; 198 00:10:04,022 --> 00:10:05,230 Λοιπόν, όχι, δεν θα ήταν, έτσι δεν είναι; 199 00:10:05,230 --> 00:10:07,860 Επειδή προσπαθούμε να αναθέσει σε τρόφιμα μπαρ. 200 00:10:07,860 --> 00:10:09,860 Αυτό δεν πρόκειται να λειτουργήσει, γιατί είναι ένας πίνακας, 201 00:10:09,860 --> 00:10:13,130 και που μόλις περιγράψαμε ότι αυτό δεν είναι νομικά Γ 202 00:10:13,130 --> 00:10:15,580 >> Αντ 'αυτού, εάν θέλουμε να αντιγράψετε τα περιεχόμενα των τροφίμων 203 00:10:15,580 --> 00:10:18,070 στο μπαρ, το οποίο είναι ό, τι προσπαθούμε να κάνουμε εδώ, 204 00:10:18,070 --> 00:10:19,970 θα χρειαστεί μια σύνταξη σαν αυτό. 205 00:10:19,970 --> 00:10:24,170 Έχουμε ένα για το βρόχο που πηγαίνει από J είναι ίσο με 0 έως 5, 206 00:10:24,170 --> 00:10:28,390 και θα αυξήσετε J σε κάθε επανάληψη του ο βρόχος και να εκχωρήσετε στοιχεία έτσι. 207 00:10:28,390 --> 00:10:33,360 Αυτό θα οδηγήσει σε μπαρ επίσης είναι ένα, δύο, τρία, τέσσερα, πέντε, 208 00:10:33,360 --> 00:10:36,730 αλλά πρέπει να το κάνουμε αυτό πολύ αργός στοιχείο κατά τρόπο στοιχείο, 209 00:10:36,730 --> 00:10:40,009 αντί από μόλις αντιγραφή ολόκληρης της συστοιχίας. 210 00:10:40,009 --> 00:10:42,050 Σε άλλα προγράμματα γλώσσες, πιο σύγχρονα, 211 00:10:42,050 --> 00:10:45,610 μπορείτε, στην πραγματικότητα, κάνουν ακριβώς ότι ισούται με απλή σύνταξη. 212 00:10:45,610 --> 00:10:49,620 Αλλά C, δυστυχώς, είμαστε δεν επιτρέπεται να το κάνουμε αυτό. 213 00:10:49,620 --> 00:10:52,026 >> Τώρα, υπάρχει ένα άλλο πράγμα που θέλω να αναφέρω 214 00:10:52,026 --> 00:10:54,650 για τους πίνακες που μπορεί να είναι λίγο λίγο δύσκολο η πρώτη φορά που θα 215 00:10:54,650 --> 00:10:55,990 να συνεργαστούμε μαζί τους. 216 00:10:55,990 --> 00:10:59,860 Συζητήσαμε σε ένα βίντεο σχετικά με την εμβέλεια των μεταβλητών, 217 00:10:59,860 --> 00:11:04,940 ότι οι περισσότερες μεταβλητές στη C, όταν σας καλούν τους λειτουργίες, έχουν περάσει από την αξία. 218 00:11:04,940 --> 00:11:08,620 Θυμάστε τι σημαίνει να περάσει κάτι με αξία; 219 00:11:08,620 --> 00:11:12,570 Αυτό σημαίνει ότι φτιάχνουμε ένα αντίγραφο του μεταβλητή που είναι να περάσει μέσα. 220 00:11:12,570 --> 00:11:16,290 Η λειτουργία καλούμενος, η συνάρτηση ότι λαμβάνει το μεταβλητό, 221 00:11:16,290 --> 00:11:17,730 δεν παίρνει την ίδια τη μεταβλητή. 222 00:11:17,730 --> 00:11:20,850 Παίρνει τη δική της τοπική αντίγραφό της να εργαστεί με. 223 00:11:20,850 --> 00:11:24,070 >> Πίνακες, φυσικά, να κάνει δεν ακολουθούν αυτόν τον κανόνα. 224 00:11:24,070 --> 00:11:27,600 Αντίθετα, αυτό που ονομάζουμε περνά με αναφορά. 225 00:11:27,600 --> 00:11:31,360 Το καλούμενο πράγματι έχει παραλάβει τη σειρά. 226 00:11:31,360 --> 00:11:34,207 Δεν λαμβάνει του τα δικά της τοπικά αντίγραφό του. 227 00:11:34,207 --> 00:11:36,040 Και αν το σκεφτείτε αυτό, αυτό είναι λογικό. 228 00:11:36,040 --> 00:11:39,750 Εάν συστοιχίες είναι πραγματικά μεγάλο, παίρνει τόσο πολύ χρόνο και προσπάθεια 229 00:11:39,750 --> 00:11:44,470 για να δημιουργήσετε ένα αντίγραφο ενός πίνακα του 100 ή 1.000 ή 10.000 στοιχεία, 230 00:11:44,470 --> 00:11:48,290 ότι δεν αξίζει τον κόπο για μια λειτουργούν για να λάβετε ένα αντίγραφό του, 231 00:11:48,290 --> 00:11:51,037 κάνετε κάποια εργασία με αυτό, και στη συνέχεια απλά να γίνει με το αντίγραφο? 232 00:11:51,037 --> 00:11:53,120 δεν χρειάζεται να έχει ότι κρέμονται γύρω πια. 233 00:11:53,120 --> 00:11:54,710 >> Επειδή συστοιχίες είναι μερικά ογκώδες και δυσκίνητο, 234 00:11:54,710 --> 00:11:56,001 Τους περνούν μόνο με αναφορά. 235 00:11:56,001 --> 00:12:01,210 Εμείς απλά εμπιστεύονται την εν λόγω λειτουργία για να μην σπάσει τίποτα. 236 00:12:01,210 --> 00:12:03,010 Γι 'αυτό έχει πάρει πραγματικά την σειρά. 237 00:12:03,010 --> 00:12:05,290 Δεν αποκτήσετε το δικό τοπικό αντίγραφο της από αυτό. 238 00:12:05,290 --> 00:12:07,170 >> Λοιπόν, τι σημαίνει αυτό, τότε, όταν ο καλούμενος 239 00:12:07,170 --> 00:12:08,970 χειρίζεται τα στοιχεία του πίνακα; 240 00:12:08,970 --> 00:12:10,780 Τι συμβαινει? 241 00:12:10,780 --> 00:12:13,210 Προς το παρόν, θα αποσιωπήσει γιατί ακριβώς πάνω από αυτό 242 00:12:13,210 --> 00:12:15,320 συμβαίνει, γιατί συστοιχίες περνούν με αναφορά 243 00:12:15,320 --> 00:12:17,810 και ό, τι άλλο έχει περάσει από την αξία. 244 00:12:17,810 --> 00:12:20,470 Αλλά σας υπόσχομαι, θα το κάνουμε επιστρέψετε και να σας δώσει την απάντηση 245 00:12:20,470 --> 00:12:23,750 σε αυτό σε μεταγενέστερη βίντεο. 246 00:12:23,750 --> 00:12:28,110 >> Εδώ είναι ένα ακόμη άσκηση για εσάς πριν ολοκληρωθεί έως τα πράγματα σε συστοιχίες. 247 00:12:28,110 --> 00:12:31,400 Η δέσμη των κώδικα εδώ, ότι είναι δεν είναι ιδιαίτερα καλό στυλ, 248 00:12:31,400 --> 00:12:33,400 απλά θα κάνω αυτή τη προειδοποίηση. 249 00:12:33,400 --> 00:12:36,660 Δεν υπάρχει κανένα σχόλιο εδώ, η οποία είναι πολύ κακή φόρμα. 250 00:12:36,660 --> 00:12:39,750 Αλλά αυτό είναι μόνο επειδή ήθελα να είναι είναι σε θέση να χωρέσει τα πάντα στην οθόνη. 251 00:12:39,750 --> 00:12:44,360 >> Στην κορυφή, μπορείτε να δείτε ότι έχω δύο δηλώσεις για το σύνολο της λειτουργίας συστοιχίας 252 00:12:44,360 --> 00:12:45,820 και ρυθμίστε το INT. 253 00:12:45,820 --> 00:12:49,680 Σετ σειρά παίρνει προφανώς μια σειρά τέσσερις ακέραιοι ως είσοδο του. 254 00:12:49,680 --> 00:12:52,767 Και ρυθμίστε το INT παίρνει προφανώς ένα μοναδικό ακέραιο ως είσοδο του. 255 00:12:52,767 --> 00:12:54,350 Αλλά και οι δύο από αυτούς δεν έχουν έξοδο. 256 00:12:54,350 --> 00:12:57,689 Η έξοδος, η επιστροφή Τύπος, κάθε ένα είναι άκυρη. 257 00:12:57,689 --> 00:12:59,480 Στο Κύριο, έχουμε ένα δύο γραμμές κώδικα. 258 00:12:59,480 --> 00:13:02,730 Δηλώνουμε μια μεταβλητή ακέραιο που ονομάζεται A και ορίστε την τιμή 10. 259 00:13:02,730 --> 00:13:07,080 Εμείς δηλώνουμε μια σειρά από τέσσερις ακέραιοι που ονομάζεται Β και αναθέτουμε τα στοιχεία 0, 1, 260 00:13:07,080 --> 00:13:08,730 2, και 3, αντίστοιχα. 261 00:13:08,730 --> 00:13:12,190 Στη συνέχεια, έχουμε μια κλήση για να ορίσετε int και ένα κάλεσμα για τη σειρά. 262 00:13:12,190 --> 00:13:15,910 Οι ορισμοί του συνόλου πίνακα και σετ int είναι κάτω από, στο κάτω μέρος. 263 00:13:15,910 --> 00:13:17,640 >> Και έτσι, πάλι, σας ζητώ την ερώτηση. 264 00:13:17,640 --> 00:13:20,770 Τι γίνεται εκτυπώνεται εδώ στο τέλος του Main; 265 00:13:20,770 --> 00:13:23,020 Υπάρχει ένα διάσελο εκτύπωση. Είμαι εκτύπωση δύο ακέραιοι. 266 00:13:23,020 --> 00:13:28,010 Είμαι εκτύπωση των περιεχομένων του Α και το περιεχόμενο της αγκύλη Β 0. 267 00:13:28,010 --> 00:13:29,880 Παύση το βίντεο εδώ και να πάρει ένα λεπτό. 268 00:13:29,880 --> 00:13:35,482 Μπορείς να καταλάβω τι είναι αυτό λειτουργία θα εκτυπωθεί στο τέλος; 269 00:13:35,482 --> 00:13:38,190 Ας ελπίσουμε ότι, αν θυμάστε το διάκριση μεταξύ πέρασμα από την αξία 270 00:13:38,190 --> 00:13:41,680 και περνώντας με αναφορά, αυτό το πρόβλημα δεν ήταν πάρα πολύ δύσκολο για σας. 271 00:13:41,680 --> 00:13:44,130 Και η απάντηση που θα έχουν βρει είναι αυτό. 272 00:13:44,130 --> 00:13:47,660 Αν δεν είστε σίγουρος για το γιατί αυτή είναι η περίπτωση, να λάβει μια δεύτερη, 273 00:13:47,660 --> 00:13:50,620 πάει πίσω, αναθεωρώ τι ήταν ακριβώς συζητώντας για τη διάβαση συστοιχίες 274 00:13:50,620 --> 00:13:53,450 με αναφορά, έναντι περνώντας άλλες μεταβλητές με βάση την αξία, 275 00:13:53,450 --> 00:13:56,680 και ελπίζω, ότι θα κάνουν λίγο περισσότερο νόημα. 276 00:13:56,680 --> 00:13:59,760 >> Είμαι ο Νταγκ Lloyd, και αυτό είναι CS50. 277 00:13:59,760 --> 00:14:01,467