2 00:00:00,000 --> 00:00:02,760 >> ΟΜΙΛΗΤΗΣ 1: Ας γράψουμε ένα πρόγραμμα που ζητά από το χρήστη για τα ονόματα και 3 00:00:02,760 --> 00:00:04,700 σπίτια των τριών φοιτητών. 4 00:00:04,700 --> 00:00:08,840 Τώρα, για να αποθηκεύσετε τα ονόματα και τα σπίτια θα μπορούσαμε να χρησιμοποιήσουμε, τι, έξι μεταβλητές. 5 00:00:08,840 --> 00:00:12,260 Τρεις χορδές για τα ονόματα, και ένα άλλο τρεις χορδές για τα σπίτια, 6 00:00:12,260 --> 00:00:16,560 αλλά ήδη γνωρίζουμε ότι μπορούμε να καθαρίσει ότι ο κωδικός χρησιμοποιώντας συστοιχίες αντ 'αυτού, 7 00:00:16,560 --> 00:00:20,220 για παράδειγμα μία συστοιχία μεγέθους 3 για την τρία ονόματα, και μια άλλη σειρά από 8 00:00:20,220 --> 00:00:22,110 μέγεθος 3 για τα σπίτια. 9 00:00:22,110 --> 00:00:25,870 Αλλά τελικά μπορούμε να το καθαρίσω αυτό ακόμη περισσότερο, και πραγματικά να κρατήσει εκείνες 10 00:00:25,870 --> 00:00:30,520 τα ονόματα και τα σπίτια μαζί, έτσι ώστε να το όνομα του μαθητή και στην οικία του ή της 11 00:00:30,520 --> 00:00:34,940 είναι κατά κάποιο τρόπο κάψουλα, έτσι για να μιλούν, στην ίδια μεταβλητή. 12 00:00:34,940 --> 00:00:39,095 >> Για να γίνει αυτό, όμως, θα πρέπει να δηλώσουν το δικό μας τύπο δεδομένων, το δικό μας τύπο σε C, 13 00:00:39,095 --> 00:00:42,660 ότι οι συντάκτες της C δεν ήταν κατ 'ανάγκην σκεφτείτε χρόνια πριν. 14 00:00:42,660 --> 00:00:45,630 Για να γίνει αυτό μπορούμε να χρησιμοποιήσουμε τη λέξη-κλειδί typedef, μαζί με την 15 00:00:45,630 --> 00:00:47,200 άλλη λέξη-κλειδί struct. 16 00:00:47,200 --> 00:00:48,160 Ας ρίξουμε μια ματιά. 17 00:00:48,160 --> 00:00:50,650 Μέσα από structs.h, έχω ήδη πάρει ξεκίνησε με 18 00:00:50,650 --> 00:00:52,560 συμπεριλαμβανομένης και της βιβλιοθήκης CS50. 19 00:00:52,560 --> 00:00:57,640 Είμαι δίπλα πρόκειται να πληκτρολογήσετε struct typedef, και, στη συνέχεια, ένα άγκιστρο. 20 00:00:57,640 --> 00:01:01,370 Μέσα από το struct, Πάω να διευκρινίζουν ότι ένας φοιτητής πρέπει να έχει ένα 21 00:01:01,370 --> 00:01:04,960 σειρά που ονομάζεται όνομα, και ένα άλλο συμβολοσειρά που ονομάζεται σπίτι. 22 00:01:04,960 --> 00:01:08,430 Πάω να κλείστε άγκιστρα μου, και διευκρινίζουν ότι το όνομα του 23 00:01:08,430 --> 00:01:11,420 αυτό το νέο τύπο δεδομένων πρέπει να είναι φοιτητής. 24 00:01:11,420 --> 00:01:15,550 Με άλλα λόγια, μέσω της παρούσας σύνταξη έχω κήρυξε ένα νέο τύπο δεδομένων της δικής μου 25 00:01:15,550 --> 00:01:19,910 που δεν υπήρχε πριν από λίγο, και εσωτερικό αυτού του τύπου δεδομένων είναι δύο στοιχεία 26 00:01:19,910 --> 00:01:24,270 πεδία ή μέλη δεδομένων, που ονομάζεται το όνομα, ένα ονομάζεται σπίτι, δύο εκ των οποίων 27 00:01:24,270 --> 00:01:25,630 είναι τύπου string. 28 00:01:25,630 --> 00:01:27,690 >> Ας δούμε τώρα χρησιμοποιούν αυτόν τον τύπο σε ένα πραγματικό πρόγραμμα. 29 00:01:27,690 --> 00:01:30,210 30 00:01:30,210 --> 00:01:34,090 Σε structs0.c, έχω πάρει παρόμοια ο ίδιος ξεκίνησε ήδη με κάποια 31 00:01:34,090 --> 00:01:36,999 Κωδικός στερεότυπο, και είμαι τώρα πρόκειται να χρησιμοποιήσετε αυτά τα δεδομένα 32 00:01:36,999 --> 00:01:39,100 πληκτρολογήστε φοιτητής, ως εξής. 33 00:01:39,100 --> 00:01:42,450 Είμαι πρώτος πρόκειται να κηρύξει μια σειρά από φοιτητή τύπου, εγώ θα 34 00:01:42,450 --> 00:01:43,920 Καλέστε τους σπουδαστές array - 35 00:01:43,920 --> 00:01:44,630 πληθυντικό - 36 00:01:44,630 --> 00:01:49,360 και θα διευκρινίζεται ότι το μέγεθός του θα είναι τρία, τα οποία, ανακοίνωση, είναι η αξία της 37 00:01:49,360 --> 00:01:50,880 οι συνεχείς ΦΟΙΤΗΤΕΣ - 38 00:01:50,880 --> 00:01:51,890 σε όλες τις πρωτεύουσες - 39 00:01:51,890 --> 00:01:54,930 ότι έχω δηλωθεί εδώ, νωρίτερα στο αρχείο. 40 00:01:54,930 --> 00:01:58,280 Ας δούμε τώρα τη συνεχή επανάληψη αυτών των τριών φοιτητές, και προτρέπει το χρήστη για 41 00:01:58,280 --> 00:02:00,050 τα ονόματα και τα σπίτια τους. 42 00:02:00,050 --> 00:02:05,422 >> int για να πάρω 0, i είναι λιγότερο από εκείνο το σταθερό, i + +. 43 00:02:05,422 --> 00:02:08,600 Και τώρα στο εσωτερικό του σώματος αυτού για βρόχο, Πάω να εκτυπώσετε κάτι 44 00:02:08,600 --> 00:02:11,470 όπως το όνομα του μαθητή. 45 00:02:11,470 --> 00:02:14,890 Είμαι στη συνέχεια πρόκειται να πάρει πραγματικά ότι το όνομα του μαθητή του, καθορίζοντας 46 00:02:14,890 --> 00:02:17,290 μαθητές περικλείουν i. 47 00:02:17,290 --> 00:02:21,550 Με άλλα λόγια, θέλω το i-ου μαθητή στην σειρά που ονομάζεται μαθητών, αλλά τώρα 48 00:02:21,550 --> 00:02:25,340 Θέλω να πάρω σε αυτό το i-ου μαθητή όνομα, και να το κάνουμε αυτό, είμαι πρόκειται να χρησιμοποιήσετε 49 00:02:25,340 --> 00:02:30,160 το. φορέα, προκειμένου να πάρει μια ειδικά στο εσωτερικό πεδίο του struct. 50 00:02:30,160 --> 00:02:37,100 Γι 'αυτό και προσδιορίζει τους μαθητές περικλείουν i. Το όνομα παίρνει την τιμή επιστροφής της GetString (). 51 00:02:37,100 --> 00:02:40,310 Εν τω μεταξύ, Πάω να εκτυπώσετε κάτι παρόμοιο, λέγοντας μαθητή 52 00:02:40,310 --> 00:02:45,410 το σπίτι, και τώρα Πάω να καθορίσετε ότι το πεδίο φοιτητών σπίτι i-th 53 00:02:45,410 --> 00:02:49,480 πρέπει να πάρετε την τιμή επιστροφής της άλλη κλήση σε GetString (). 54 00:02:49,480 --> 00:02:52,350 >> Τώρα ας κάνουμε κάτι με αυτά τα τρία τα ονόματα και τα σπίτια των μαθητών, 55 00:02:52,350 --> 00:02:56,230 κάτι απλό όπως εκτύπωση κάθε έξω σε μια πρόταση. 56 00:02:56,230 --> 00:03:07,580 για int i πάρει 0, πάλι θ είναι μικρότερη από φοιτητές, i + +, printf "% s είναι% s. 57 00:03:07,580 --> 00:03:12,600 backslash n ", και τώρα επιτρέψτε μου να συνδέσετε οι τιμές των δύο αυτών πεδίων, 58 00:03:12,600 --> 00:03:19,055 μαθητές περικλείουν i. το όνομα, το κόμμα, μαθητές περικλείουν i. σπίτι, κοντά 59 00:03:19,055 --> 00:03:21,290 paren, τελεία. 60 00:03:21,290 --> 00:03:23,020 >> Και τώρα πρέπει να κάνω κάτι ακόμα. 61 00:03:23,020 --> 00:03:26,600 Στο κάτω μέρος αυτού του αρχείου, θα πρέπει να ελευθερώσετε τη μνήμη που διατέθηκε 62 00:03:26,600 --> 00:03:30,290 πίσω από τις σκηνές από GetSring (), η οποία καλεί φυσικά malloc, προκειμένου να 63 00:03:30,290 --> 00:03:32,500 εκχωρήσει μνήμη για τις χορδές ο χρήστης πληκτρολογεί. 64 00:03:32,500 --> 00:03:35,720 Αλλά αυτό είναι απλό. 65 00:03:35,720 --> 00:03:42,610 int για να πάρω 0, i είναι μικρότερο από μαθητών, ί + +, και μέσα στο σώμα του 66 00:03:42,610 --> 00:03:48,670 αυτό για βρόχο, είμαι απλώς πρόκειται να παρέχουν δωρεάν βραχίονα φοιτητές i. το όνομα, 67 00:03:48,670 --> 00:03:52,300 και δωρεάν φοιτητές περικλείουν i. σπίτι. 68 00:03:52,300 --> 00:03:55,620 >> Τώρα, έχουμε χρησιμοποιούνται σαφώς για τρεις βρόχους σε αυτό το πρόγραμμα, όταν πραγματικά μου 69 00:03:55,620 --> 00:03:58,800 θα μπορούσαν να έχουν χρησιμοποιηθεί μόνο ένα, αλλά αυτό είναι μόνο για λόγους επίδειξης, έτσι ώστε 70 00:03:58,800 --> 00:04:02,850 μπορούμε να καθορίσουμε σε τρεις διαφορετικές βήματα τι ακριβώς κάνουμε. 71 00:04:02,850 --> 00:04:06,120 Είμαστε το πρώτο να πάρει ένα όνομα και ένα σπίτι για κάθε ένα από τους μαθητές, είμαστε συνέχεια 72 00:04:06,120 --> 00:04:08,900 εκτύπωση το όνομα και το σπίτι για καθεμία από τις τρεις φοιτητές και 73 00:04:08,900 --> 00:04:11,910 Στη συνέχεια θα πάμε για να ελευθερώσετε τη μνήμη χρησιμοποιείται από κάθε μαθητή. 74 00:04:11,910 --> 00:04:15,310 Αλλά σίγουρα θα μπορούσαμε να έχουμε συνδυάσει αυτό σε ένα μεγαλύτερο για τους βρόχο. 75 00:04:15,310 --> 00:04:18,650 >> Ας σώσει τώρα, την κατάρτιση, και τρέξτε το πρόγραμμα. 76 00:04:18,650 --> 00:04:26,850 κάνουν structs 0. / structs 0, μαθητή όνομα, ας παρέχουν Δαβίδ, αυτός θα ζήσει 77 00:04:26,850 --> 00:04:31,580 σε Mather House, το όνομα του μαθητή, ας λένε Lauren, που θα ζουν σε Leverett 78 00:04:31,580 --> 00:04:36,590 Σπίτι, το όνομα του μαθητή του, Rob, αυτός θα ζουν σε Kirkland House. 79 00:04:36,590 --> 00:04:39,440 Και πράγματι, ο David είναι σε Mather, Lauren είναι σε Leverett, 80 00:04:39,440 --> 00:04:40,810 και ο Rob είναι σε Kirkland. 81 00:04:40,810 --> 00:04:43,425