Πίνακας περιεχομένων:
- Πώς να χρησιμοποιήσετε τις συνολικές μεταβλητές
- Ένα καλύτερο παράδειγμα χρήσης μιας παγκόσμιας μεταβλητής και μιας κατάστασης όπου οι μεταβλητές είναι καθολικά απαραίτητες είναι όταν περνάτε μια δομή σε μια συνάρτηση. Σε αυτή την περίπτωση, πρέπει να δηλώσετε τη δομή ως παγκόσμια, ώστε όλες οι λειτουργίες να μπορούν να έχουν πρόσβαση σε μεταβλητές αυτού του τύπου δομής.
Βίντεο: Zeitgeist Addendum 2024
Μερικές φορές στον προγραμματισμό C, μια μεταβλητή πρέπει να είναι σαν την υπηρεσία κινητής τηλεφωνίας: διαθέσιμη παντού. Η μεταβλητή μπορεί επίσης να χρησιμοποιηθεί από οποιαδήποτε λειτουργία ανά πάσα στιγμή. Αυτός ο τύπος μεταβλητής μπορεί να ονομαστεί μια μεταβλητή καθολική . Θα μπορούσε να ονομαστεί μια παγκόσμια μεταβλητή. Αλλά στο C, αναφέρεται ως μεταβλητή global .
Πώς να χρησιμοποιήσετε τις συνολικές μεταβλητές
Οι συνολικές μεταβλητές επιλύουν συγκεκριμένα προβλήματα κάνοντας τη δήλωση μεταβλητών καθολική. Με αυτόν τον τρόπο, οποιαδήποτε λειτουργία οπουδήποτε στο πρόγραμμα μπορεί να έχει πρόσβαση στη μεταβλητή. Δεν χρειάζεται να περάσει ή να επιστραφεί από μια λειτουργία.
Η ανάκτηση της ηλικίας σας γύρω σας δείχνει πώς δηλώνεται και χρησιμοποιείται μια παγκόσμια μεταβλητή. Οι συνολικές μεταβλητές ηλικία και επιπλέουν επηρεάζονται από τις δύο λειτουργίες. Μπορούν να μεταβιβαστούν σε αυτές τις λειτουργίες, αλλά και οι δύο τιμές δεν μπορούν να επιστραφούν. (Οι λειτουργίες C επιστρέφουν μόνο μία τιμή.) Επομένως, η σφαιρική μεταβλητή χρησιμοποιείται ως λύση.
ΟΡΓΑΝΩΣΗ ΤΗΣ ΗΛΙΚΙΑΣ ΣΑΣ
#περιλαμβάνει κενό μισό (κενό); κενό δύο φορές (κενό); int age? πλωτά πόδια? int main () {printf ("Πόσο χρονών είσαι:"); scanf ("% d", & ηλικία); printf ("Πόσο ψηλά είσαι (σε πόδια):"); scanf ("% f", & πόδια); printf ("Είσαι% d ετών και% 1f πόδια ψηλό n", ηλικία, πόδια)? Ήμισυ(); εις διπλούν(); printf ("Αλλά δεν είστε πραγματικά% d ετών ή%. 1f πόδια ψηλά. n", ηλικία, πόδια)? επιστροφή (0);} κενό μισό (άκυρο) {float a, h; a = (πλωτή) ηλικία / 2. 0; printf ("Η μέση ηλικία σας είναι% 1f. n", a); h = πόδια / 2. 0; printf ("Το ήμισυ του ύψους σας είναι% 1f. n", h);} κενό δύο φορές (άκυρο) {age * = 2; printf ("Δύο φορές την ηλικία σας είναι% d. n", ηλικία). πόδια * = 2. printf ("Δύο φορές το ύψος σας είναι% 1fn", πόδια),}
Η γραμμή 6 δηλώνει την ηλικία και την μεταβλητή float πόδια . Αυτές είναι παγκόσμιες μεταβλητές επειδή δηλώνονται εκτός οποιασδήποτε λειτουργίας, εκεί πάνω στο #include, #define και prototyping land. Οι μεταβλητές στη συνέχεια χρησιμοποιούνται σε κάθε λειτουργία. Οι τιμές τους είναι προσβάσιμες σε όλο τον κώδικα. Ακόμη και όταν οι τιμές αυτές αλλάζουν στη συνάρτηση twice (), η κύρια () λειτουργία χρησιμοποιεί τις νέες τιμές.
Άσκηση 1
: Πληκτρολογήστε τον πηγαίο κώδικα για την ανάγνωση της ηλικίας σας στο editor σας, δημιουργώντας ένα νέο πρόγραμμα. Κατασκευάστε και τρέξτε. Μην είστε τεμπέλης για τη χρήση παγκόσμιων μεταβλητών! Εάν μπορείτε να περάσετε μια τιμή σε μια λειτουργία, κάντε το! Είναι σωστό. Πολλοί αναρίθμητοι προγραμματιστές δηλώνουν όλες τις μεταβλητές τους παγκοσμίως για να "λύσουν το πρόβλημα."Αυτό είναι παραπλανητικό και ακατάλληλο.
Πώς να δημιουργήσετε μια μεταβλητή παγκόσμιας δομής
Ένα καλύτερο παράδειγμα χρήσης μιας παγκόσμιας μεταβλητής και μιας κατάστασης όπου οι μεταβλητές είναι καθολικά απαραίτητες είναι όταν περνάτε μια δομή σε μια συνάρτηση. Σε αυτή την περίπτωση, πρέπει να δηλώσετε τη δομή ως παγκόσμια, ώστε όλες οι λειτουργίες να μπορούν να έχουν πρόσβαση σε μεταβλητές αυτού του τύπου δομής.
Μην αφήνετε το τεράστιο μήκος του Passing a Structure σε μια λειτουργία να σας εκφοβίσει! Τα περισσότερα από τα "πραγματικά" προγράμματα που γράφετε τελικά θα είναι πολύ μακρύτερα!
ΠΑΡΟΥΣΙΑΣΗ ΔΟΜΗΣΗΣ ΣΕ ΛΕΙΤΟΥΡΓΙΑ
#include #include #include #define ΜΕΓΕΘΟΣ 5 struct bot {int xpos; int ypos;}; δομή bot bot initialize (struct bot b); int main () {δομή rob robots [SIZE]; int x; σύντομος (μη υπογεγραμμένος) χρόνος (NULL)). Για να περάσουμε μια δομή σε μια συνάρτηση, η δομή πρέπει να δηλωθεί σε παγκόσμιο επίπεδο, κάτι που συμβαίνει μεταξύ των Γραμμών 7 και 10. Αυτό πρέπει να συμβεί ακόμα και προτού η λειτουργία είναι πρωτότυπη, η οποία λαμβάνει χώρα στη Γραμμή 12.
Η συνάρτηση initialize () εκτελείται από τις Γραμμές 30 έως 41. Η δομή μεταβιβάζεται στη συνάρτηση και επιστρέφει.Σημειώστε ότι η μεταβλητή δομής πρέπει να οριστεί πλήρως ως όρισμα.Στη γραμμή 30, η συνάρτηση δίνεται στο όνομα της μεταβλητήςb
στο εσωτερικό της συνάρτησης Η εντολή επιστροφής στη Γραμμή 40 μεταβιβάζει τη δομή πίσω στη λειτουργία κλήσης. Άσκηση 2
:
Βιδώστε το θάρρος σας στο σημείο κολλήματος και πληκτρολογήστε όλες αυτές τις γραμμές του πηγαίου κώδικα από την Μετάβαση μιας Δομής σε μια Λειτουργία στον επεξεργαστή σας Δημιουργία και εκτέλεση Η έξοδος δείχνει πώς πέρασε η συστοιχία δομών (ένα στοιχείο κάθε φορά) σε μια λειτουργία, τροποποιημένη στο func και στη συνέχεια επέστρεψε.