1 00:00:00,000 --> 00:00:00,520 2 00:00:00,520 --> 00:00:03,530 >> ΟΜΙΛΗΤΗΣ: Ας γράψουμε ένα πρόγραμμα που ζητά από το χρήστη για δύο χορδές και 3 00:00:03,530 --> 00:00:07,170 Στη συνέχεια αναφέρει αν οι χορδές είναι τα ίδια ή δεν είναι το ίδιο. 4 00:00:07,170 --> 00:00:10,290 Έχω ήδη αρχίσει να μας μακριά από εδώ καλώντας printf δύο φορές και καλώντας 5 00:00:10,290 --> 00:00:14,520 GetString δύο φορές, την αποθήκευση της επιστροφής τιμές σε s και t, αντιστοίχως. 6 00:00:14,520 --> 00:00:17,960 >> Τώρα, το ένστικτό μου για να συγκρίνετε αυτές τις δύο χορδές θα ήταν να χρησιμοποιήσετε το οικείο 7 00:00:17,960 --> 00:00:19,160 φορέας της ισότητας - 8 00:00:19,160 --> 00:00:22,070 αν s ισούται ισούται με t. 9 00:00:22,070 --> 00:00:28,120 Στη συνέχεια, Πάω να πάει μπροστά και να εκτυπώσετε out "Πληκτρολογήσατε το ίδιο πράγμα! 10 00:00:28,120 --> 00:00:35,190 Αλλιώς, αν αυτό δεν είναι αλήθεια, είμαι απλά πρόκειται να πληκτρολογήσετε printf ("Έχετε πληκτρολογήσει 11 00:00:35,190 --> 00:00:37,880 διαφορετικά πράγματα! 12 00:00:37,880 --> 00:00:38,850 >> Αρκετά απλή - 13 00:00:38,850 --> 00:00:41,820 Είμαι απλά συγκρίνοντας s κατά t, και αν είναι ίσες, 14 00:00:41,820 --> 00:00:43,250 εκτύπωση τόσο πολύ. 15 00:00:43,250 --> 00:00:45,450 Ας συγκεντρώσει και να τρέξει αυτό το πρόγραμμα. 16 00:00:45,450 --> 00:00:51,950 Κάντε συγκρίνουν 0. / Συγκρίνετε 0, να πω κάτι, γεια σου, 17 00:00:51,950 --> 00:00:54,200 πω κάτι, γεια. 18 00:00:54,200 --> 00:00:56,870 >> Δυστυχώς, το πρόγραμμα θεωρεί έχω δακτυλογραφημένες διαφορετικά πράγματα, ακόμα κι αν 19 00:00:56,870 --> 00:00:59,530 σαφώς πληκτρολογήσει "γεια" η ίδιο τρόπο και τις δύο φορές. 20 00:00:59,530 --> 00:01:00,850 Τώρα, γιατί θα μπορούσε να είναι; 21 00:01:00,850 --> 00:01:03,750 >> Λοιπόν, αποδεικνύεται ότι όλα αυτά χρόνο, χορδές ήταν λίγο πιο 22 00:01:03,750 --> 00:01:06,780 περίπλοκη από μια ακολουθία χαρακτήρων κάτω από το καπό. 23 00:01:06,780 --> 00:01:11,450 Στην πραγματικότητα, ένα string είναι ένας δείκτης ή μια διεύθυνση, και συγκεκριμένα η διεύθυνση 24 00:01:11,450 --> 00:01:14,640 του πρώτου χαρακτήρα από το ότι ακολουθία χαρακτήρων. 25 00:01:14,640 --> 00:01:18,640 >> Και έτσι όταν συγκρίνουμε s κατά τ με ίση σύμβολο της ισότητας, είμαστε 26 00:01:18,640 --> 00:01:23,200 πραγματικά ζητώντας, είναι αυτή η διεύθυνση ίση ίση με αυτή τη διεύθυνση; 27 00:01:23,200 --> 00:01:26,850 Και αυτό δεν πρόκειται να συμβεί αν ο χρήστης έχει πληκτρολογήσει σε δύο διαφορετικά 28 00:01:26,850 --> 00:01:30,370 χορδές και έχουμε ονομάζονται GetString δύο φορές να τους πάρει, επειδή η μνήμη 29 00:01:30,370 --> 00:01:34,480 ότι GetString χρησιμοποιεί για να αποθηκεύσει το πρώτο χορδών θα μπορούσε να είναι εδώ στη μνήμη RAM, αλλά η 30 00:01:34,480 --> 00:01:37,120 μνήμης που χρησιμοποιεί GetString να αποθηκεύσετε η δεύτερη σειρά θα 31 00:01:37,120 --> 00:01:38,760 να είναι εδώ στη μνήμη RAM. 32 00:01:38,760 --> 00:01:42,380 Και φυσικά, στη συνέχεια, οι δύο αυτές κομμάτια μνήμης έχουν διαφορετικές διευθύνσεις για 33 00:01:42,380 --> 00:01:44,220 πρώτη τους χαρακτήρες τους. 34 00:01:44,220 --> 00:01:46,120 >> Έτσι είναι s ίση ίσο με t; 35 00:01:46,120 --> 00:01:46,885 Λοιπόν, όχι. 36 00:01:46,885 --> 00:01:50,510 Αν s και t δείχνουν προς διαφορετικές κομμάτια της μνήμης, όπως θα γίνει με 37 00:01:50,510 --> 00:01:54,140 καλώντας GetString δύο φορές, δεν είναι, Στην πραγματικότητα, πρόκειται να είναι το ίδιο. 38 00:01:54,140 --> 00:01:57,700 Έτσι φαίνεται να είναι η περίπτωση ότι για να συγκρίνει δύο χορδές της διαισθητικής 39 00:01:57,700 --> 00:02:01,050 τρόπο που περιμένουμε, χαρακτήρα χαρακτήρα, χρειαζόμαστε μια άλλη τεχνική 40 00:02:01,050 --> 00:02:02,300 συνολικά. 41 00:02:02,300 --> 00:02:03,902