1 00:00:07,185 --> 00:00:09,540 [Powered by Google Translate] CHRIS GERBER: Μια λειτουργία είναι μια σειρά από βήματα μέσα σε ένα 2 00:00:09,540 --> 00:00:12,000 μεγαλύτερο πρόγραμμα, το οποίο συνήθως προορίζεται να ονομάζεται 3 00:00:12,000 --> 00:00:14,440 πολλές φορές και από πολλαπλές άλλες τοποθεσίες 4 00:00:14,440 --> 00:00:15,720 το πρόγραμμα. 5 00:00:15,720 --> 00:00:18,480 Κατά τη δημιουργία μια συνάρτηση Γ, μία από τις απαιτήσεις είναι η 6 00:00:18,480 --> 00:00:21,050 καθορίσετε έναν τύπο τιμή επιστροφής. 7 00:00:21,050 --> 00:00:23,490 Η απλούστερη περίπτωση είναι μια κατάσταση όπου ο καλών 8 00:00:23,490 --> 00:00:26,510 κωδικός δεν ασχολείται με το αποτέλεσμα της λειτουργίας. 9 00:00:26,510 --> 00:00:28,530 Αυτό μπορεί να συμβεί όταν εκτυπώνετε δεδομένα για το 10 00:00:28,530 --> 00:00:31,120 οθόνη του χρήστη, όπως με printf. 11 00:00:31,120 --> 00:00:33,140 Σε αυτή την περίπτωση, μπορούμε να δηλώσουμε μια τιμή επιστροφής 12 00:00:33,140 --> 00:00:35,020 να είναι άκυρη τύπου. 13 00:00:35,020 --> 00:00:37,130 Χρησιμοποιώντας κενό λέει απλά ο compiler ότι δεν 14 00:00:37,130 --> 00:00:39,120 αξία θα πρέπει να επιστραφεί. 15 00:00:39,120 --> 00:00:40,530 Ας δούμε τι μοιάζει αυτό. 16 00:00:40,530 --> 00:00:42,940 >> Ας πούμε ότι έχουμε μια λειτουργία που ονομάζεται say_hello ότι 17 00:00:42,940 --> 00:00:44,490 παίρνει ένα επιχείρημα. 18 00:00:44,490 --> 00:00:47,050 Θα δώσετε το όνομα ενός ατόμου και θα εμφανιστεί ένα χαιρετισμό 19 00:00:47,050 --> 00:00:48,380 στην οθόνη. 20 00:00:48,380 --> 00:00:50,505 Το όνομα θα είναι του τύπου char *. 21 00:00:50,505 --> 00:00:53,080 Και θα διευκρινίζει ότι ως επιχείρημα. 22 00:00:53,080 --> 00:00:55,970 Η εφαρμογή μου δεν χρειάζεται να ξέρει τι τυπώθηκε ή εάν 23 00:00:55,970 --> 00:00:56,970 τυπώθηκε. 24 00:00:56,970 --> 00:00:59,680 Έτσι, η τιμή θα είναι επιστροφή του κενού τύπου. 25 00:00:59,680 --> 00:01:02,060 Η λειτουργία αυτή μπορεί να εκτυπωθεί στην οθόνη με μια εντολή όπως 26 00:01:02,060 --> 00:01:07,620 printf ("Γεια σας,% s \ n 27 00:01:07,620 --> 00:01:12,100 ", Όνομα)?. 28 00:01:12,100 --> 00:01:14,690 Το χαιρετισμό θα εμφανιστεί και ο έλεγχος θα περάσει 29 00:01:14,690 --> 00:01:16,260 πίσω στην καλούσα κώδικα. 30 00:01:16,260 --> 00:01:19,370 Ένα πράγμα που πρέπει να σημειωθεί είναι ότι όταν ο τύπος τιμή επιστροφής είναι άκυρη, 31 00:01:19,370 --> 00:01:20,790 δεν χρειάζεται να περιλαμβάνει απόδοση 32 00:01:20,790 --> 00:01:22,300 δήλωση στην λειτουργία. 33 00:01:22,300 --> 00:01:25,270 Αν επιλέξετε να συμπεριλάβετε ένα, δεν περιλαμβάνουν μια τιμή επιστροφής 34 00:01:25,270 --> 00:01:27,420 ως επιχείρημα. 35 00:01:27,420 --> 00:01:29,380 >> Σε ορισμένες περιπτώσεις, είναι λογικό να επιστρέψει ένα 36 00:01:29,380 --> 00:01:30,570 αξία από μια λειτουργία. 37 00:01:30,570 --> 00:01:33,900 Ας πούμε ότι γράφαμε μια λειτουργία που ονομάζεται add_floats. 38 00:01:33,900 --> 00:01:36,160 Θα δώσετε δύο επιχειρήματα, και οι δύο πλωτήρες, 39 00:01:36,160 --> 00:01:37,510 ονομάζεται πρώτη και δεύτερη. 40 00:01:37,510 --> 00:01:40,520 Και θα μας πει ποιο είναι το άθροισμα αυτών των αρμάτων είναι. 41 00:01:40,520 --> 00:01:43,000 Ξέρουμε ότι αν προσθέσουμε δύο πλωτήρες μαζί, το αποτέλεσμα 42 00:01:43,000 --> 00:01:44,120 θα είναι float. 43 00:01:44,120 --> 00:01:47,540 Δεδομένου ότι, επιλέγουμε ένα είδος επιστροφής του πλωτήρα. 44 00:01:47,540 --> 00:01:50,040 Αυτή η λειτουργία θα πραγματοποιεί τον υπολογισμό αυτό και να επιστρέψετε 45 00:01:50,040 --> 00:01:52,260 οι τιμές σε μια δήλωση, όπως την επιστροφή 46 00:01:52,260 --> 00:01:54,770 + πρώτο δευτερόλεπτο?. 47 00:01:54,770 --> 00:01:57,300 Όταν ο έλεγχος περνά πίσω στον καλούντα κώδικα, η 48 00:01:57,300 --> 00:02:00,030 τιμή που προκύπτει είναι τώρα διαθέσιμες στην εν λόγω κώδικα. 49 00:02:00,030 --> 00:02:04,250 Μπορούμε να αποθηκεύσουμε αυτή την τιμή, όπως έτσι: αποτέλεσμα float = 50 00:02:04,250 --> 00:02:09,410 add_floats (3,14, 1,62 51 00:02:09,410 --> 00:02:11,290 )?. 52 00:02:11,290 --> 00:02:15,200 Καταλήγουν σε αυτή την περίπτωση θα περιέχει πλέον την τιμή 4,76. 53 00:02:15,200 --> 00:02:18,620 >> Ως υπενθύμιση, τιμές κινητής υποδιαστολής είναι ανακριβής. 54 00:02:18,620 --> 00:02:21,250 Έτσι, αν αυτό ήταν ένα οικονομικό υπολογισμό, χρησιμοποιώντας δολάρια και 55 00:02:21,250 --> 00:02:24,960 σεντ, μπορεί να θέλετε να εξετάσει ένα συγκεκριμένο τύπο δεδομένων, όπως 56 00:02:24,960 --> 00:02:29,120 int και εκτελεί τον υπολογισμό στις πένες. 57 00:02:29,120 --> 00:02:31,270 >> Μια άλλη περίπτωση που θα θέλαμε να επιστρέψει μια τιμή από ένα 58 00:02:31,270 --> 00:02:33,980 λειτουργία είναι όταν θέλουμε να ξέρουμε αν μια λειτουργία ήταν 59 00:02:33,980 --> 00:02:35,960 επιτυχής. 60 00:02:35,960 --> 00:02:39,190 Αν δεν ήταν επιτυχής, θα μπορεί επίσης να θέλουν να γνωρίζουν τι είδους 61 00:02:39,190 --> 00:02:41,250 σφάλμα. 62 00:02:41,250 --> 00:02:43,647 Ας πούμε ότι προσπαθείτε να ανοίξετε ένα αρχείο στο δίσκο για να μετρήσει 63 00:02:43,647 --> 00:02:45,220 ο αριθμός των χαρακτήρων σε αυτό. 64 00:02:45,220 --> 00:02:48,635 Αν το αρχείο δεν μπορεί να ανοίξει, θέλουμε να είναι σε θέση να σταματήσει και 65 00:02:48,635 --> 00:02:50,910 πει το χρήστη για το πρόβλημα. 66 00:02:50,910 --> 00:02:54,070 >> Θα καλέσετε count_file_chars λειτουργία μας και θα 67 00:02:54,070 --> 00:02:55,490 πάρτε ένα επιχείρημα. 68 00:02:55,490 --> 00:02:57,420 Θα περάσει στο όνομα του αρχείου χρησιμοποιώντας ένα 69 00:02:57,420 --> 00:02:59,610 char * ονομάζεται αρχείου. 70 00:02:59,610 --> 00:03:03,050 Η λειτουργία αυτή μπορεί να μοιάζει κάτι σαν αυτό. 71 00:03:03,050 --> 00:03:05,450 Σε αυτό το παράδειγμα, θα περιμέναμε η καταμέτρηση επέστρεψε στην 72 00:03:05,450 --> 00:03:07,130 είναι 0 ή περισσότερο. 73 00:03:07,130 --> 00:03:08,870 Αυτό μας αφήνει τις αρνητικές ακέραιοι να 74 00:03:08,870 --> 00:03:10,200 χρήση ως φρουρός αξίες. 75 00:03:10,200 --> 00:03:13,320 Μια τιμή φρουρός είναι απλά μια ειδική τιμή που δεν είναι 76 00:03:13,320 --> 00:03:16,200 νόμιμα στοιχεία, αλλά δεν μεταφέρουν πληροφορίες. 77 00:03:16,200 --> 00:03:19,480 Εδώ, αν επιστρέψω μια -1 έως την κλήση κώδικα, είμαι 78 00:03:19,480 --> 00:03:21,830 πραγματικά στέλνοντας το μήνυμα ότι ένα σφάλμα κατά την 79 00:03:21,830 --> 00:03:23,810 προσπαθεί να αποκτήσει πρόσβαση στο αρχείο. 80 00:03:23,810 --> 00:03:26,060 Θα μπορούσα στη συνέχεια ελέγξτε την τιμή επιστροφής για να καθορίσει εάν μου 81 00:03:26,060 --> 00:03:28,060 κλήση της συνάρτησης ήταν επιτυχής. 82 00:03:28,060 --> 00:03:30,350 Αν ο αριθμός ήταν 0 ή μεγαλύτερη, θα ήθελα να ξέρω το 83 00:03:30,350 --> 00:03:32,180 αριθμό των χαρακτήρων του αρχείου. 84 00:03:32,180 --> 00:03:35,310 Αν, ωστόσο, ο αριθμός ήταν μικρότερη από 0, θα μπορούσα απλά 85 00:03:35,310 --> 00:03:37,350 εκτύπωση ότι το πρόβλημα είχε συμβεί. 86 00:03:37,350 --> 00:03:40,120 Ένα trade-off που εξετάζει είναι ότι επιφυλάσσοντας όλα τα 87 00:03:40,120 --> 00:03:43,180 αρνητικές τιμές ως τιμές δεικτών, υποθέτοντας αυτό είναι ένα 88 00:03:43,180 --> 00:03:46,070 Ακέραιος 32-bit, έχω λάβει ουσιαστικά μακριά γύρω από 89 00:03:46,070 --> 00:03:48,970 2 δισεκατομμύρια πιθανές τιμές επιστροφής. 90 00:03:48,970 --> 00:03:51,270 >> Τύποι τιμή επιστροφής είναι ένα από τα πιο σημαντικά στοιχεία της 91 00:03:51,270 --> 00:03:52,460 κλήσεις συναρτήσεων. 92 00:03:52,460 --> 00:03:54,670 Ας ελπίσουμε ότι αυτή η σύντομη επισκόπηση έχει βοηθήσει να σκεφτείτε 93 00:03:54,670 --> 00:03:59,110 τρεις βασικούς τύπους: void, αξίες αποτέλεσμα, και οι τιμές δεικτών, 94 00:03:59,110 --> 00:04:00,190 και όταν καθένα από τα τρία μπορεί να είναι 95 00:04:00,190 --> 00:04:02,010 κατάλληλο για σας κωδικό. 96 00:04:02,010 --> 00:04:03,260 Ευχαριστώ για την προσοχή.