Διαφορά Μεταξύ Τοπικής και Παγκόσμιας Μεταβλητής

Συγγραφέας: Laura McKinney
Ημερομηνία Δημιουργίας: 1 Απρίλιος 2021
Ημερομηνία Ενημέρωσης: 11 Ενδέχεται 2024
Anonim
Πόσα Μνημεία Παγκόσμιας Πολιτιστικής Κληρονομιάς υπάρχουν στον κόσμο;
Βίντεο: Πόσα Μνημεία Παγκόσμιας Πολιτιστικής Κληρονομιάς υπάρχουν στον κόσμο;

Περιεχόμενο


Όπως συζητήσαμε προηγουμένως, μια μεταβλητή είναι ένα όνομα που δίνεται σε μια θέση μνήμης και πρέπει να δηλωθεί πριν χρησιμοποιηθεί. Στο Γ, όλες οι μεταβλητές δηλώνονται κατά την έναρξη του προγράμματος. Στην C ++, οι μεταβλητές μπορούν να δηλωθούν, ανά πάσα στιγμή, πριν χρησιμοποιηθούν στις οδηγίες.

Οι μεταβλητές ταξινομούνται στη μεταβλητή «τοπική» και «παγκόσμια», η οποία είναι το κύριο θέμα της συζήτησής μας. Εδώ η κύρια διαφορά μεταξύ της τοπικής και της παγκόσμιας μεταβλητής είναι ότι μια τοπική μεταβλητή δηλώνεται μέσα σε ένα μπλοκ λειτουργιών. Αντίθετα, η παγκόσμια μεταβλητή δηλώνεται εκτός των λειτουργιών του προγράμματος.

Ας μελετήσουμε κάποιες περισσότερες διαφορές μεταξύ μιας τοπικής και μιας παγκόσμιας μεταβλητής μαζί με ένα διάγραμμα σύγκρισης.

  1. Συγκριτικό διάγραμμα
  2. Ορισμός
  3. Βασικές διαφορές
  4. Πλεονεκτήματα
  5. Μειονεκτήματα
  6. συμπέρασμα

Συγκριτικό διάγραμμα:

ΒΑΣΗ ΓΙΑ ΣΥΓΚΡΙΣΗ ΤΟΠΙΚΟ ΜΕΤΑΒΛΗΤΟ ΠΑΓΚΟΣΜΙΑ ΜΕΤΑΒΛΗΤΕΣ
Δήλωση Οι μεταβλητές δηλώνονται μέσα σε μια λειτουργία.
Οι μεταβλητές δηλώνονται εκτός οποιασδήποτε λειτουργίας.
Πεδίο εφαρμογής
Μέσα σε μια λειτουργία, μέσα στην οποία δηλώνονται.Σε όλο το πρόγραμμα.
αξία
Η μη αρχικοποιημένη τοπική μεταβλητή έχει ως αποτέλεσμα την αποθήκευση της τιμής σκουπιδιών.Η μη αρχικοποιημένη παγκόσμια μεταβλητή αποθηκεύει μηδέν από προεπιλογή.
Πρόσβαση Πρόσβαση μόνο στις δηλώσεις, μέσα σε μια λειτουργία στην οποία δηλώνονται. Πρόσβαση σε οποιαδήποτε δήλωση σε ολόκληρο το πρόγραμμα.
Κοινή χρήση δεδομένωνΔεν παρέχεταιΔιευκολύνθηκε
ΖΩΗΔημιουργείται όταν το μπλοκ λειτουργίας εισάγεται και καταστρέφεται κατά την έξοδο. Συνεχίστε να υπάρχουν καθ 'όλη τη διάρκεια εκτέλεσης του προγράμματος.
Αποθήκευση
Οι τοπικές μεταβλητές αποθηκεύονται στη στοίβα, εκτός εάν καθορίζονται.
Αποθηκεύεται σε μια σταθερή θέση που αποφασίζεται από έναν μεταγλωττιστή.
Παράβαση παραμέτρουΑπαραίτητη προϋπόθεσηΔεν απαιτείται για τις συνολικές μεταβλητές.
Αλλαγές σε μια μεταβλητή τιμήΟποιαδήποτε τροποποίηση υποδηλώνεται σε μια τοπική μεταβλητή δεν επηρεάζει τις άλλες λειτουργίες του προγράμματος.Οι αλλαγές που εφαρμόζονται στην παγκόσμια μεταβλητή μιας συνάρτησης αντικατοπτρίζουν τις αλλαγές σε όλο το πρόγραμμα.

Ορισμός τοπικής μεταβλητής

ΕΝΑ τοπική μεταβλητή δηλώνεται πάντοτε μέσα σε ένα μπλοκ λειτουργίας. Στο C, μια τοπική μεταβλητή δηλώνεται στην αρχή ενός μπλοκ κώδικα. Στην C ++, μπορούν να δηλωθούν οπουδήποτε στο μπλοκ κώδικα πριν από τη χρήση τους. Οι τοπικές μεταβλητές είναι προσπελάσιμες μόνο από τις δηλώσεις γραμμένες μέσα σε μια λειτουργία στην οποία δηλώνονται οι τοπικές μεταβλητές. Είναι ασφαλείς με μια έννοια ότι δεν μπορούν να έχουν πρόσβαση σε άλλη λειτουργία του ίδιου προγράμματος.


Οι τοπικές μεταβλητές υπάρχουν μέχρι να εκτελεστεί το μπλοκ της συνάρτησης και έτσι να καταστραφεί μετά την έξοδο από το μπλοκ. Οι τοπικές μεταβλητές χάνουν το περιεχόμενό τους μόλις η εκτέλεση εγκαταλείψει το μπλοκ στο οποίο δηλώνονται.

Ο λόγος πίσω από αυτό είναι ότι οι τοπικές μεταβλητές αποθηκεύονται στη στοίβα εκτός εάν καθορίζεται η ειδική αποθήκευση. Η στοίβα έχει δυναμική φύση και η αλλαγή στη θέση της μνήμης οδηγεί στον λόγο για τον οποίο η τοπική μεταβλητή δεν διατηρεί την αξία της μόλις το μπλοκ μιας συνάρτησης υπάρχει.

Σημείωση:
Ωστόσο, υπάρχει ένας τρόπος να διατηρηθεί η αξία μιας τοπικής μεταβλητής χρησιμοποιώντας τον τροποποιητή «στατικού».

Ορισμός της παγκόσμιας μεταβλητής

ΕΝΑ παγκόσμια μεταβλητή δηλώνεται εκτός όλων των λειτουργιών που υπάρχουν σε ένα πρόγραμμα. Σε αντίθεση με τις τοπικές μεταβλητές, η παγκόσμια μεταβλητή μπορεί να προσεγγιστεί από οποιαδήποτε λειτουργία που υπάρχει σε ένα πρόγραμμα. Οι γενικές μεταβλητές δεν είναι πολύ αξιόπιστες καθώς η αξία τους μπορεί να αλλάξει από οποιαδήποτε λειτουργία που υπάρχει στο πρόγραμμα.


Εξακολουθούν να υφίστανται μέχρι να εκτελεσθεί εντελώς ολόκληρο το πρόγραμμα. Οι συνολικές μεταβλητές διατηρούν τις τιμές τους μέχρι να εκτελεστεί το πρόγραμμα. Ο λόγος είναι ότι αποθηκεύονται σε μια σταθερή περιοχή μνήμης, που αποφασίζεται από τον μεταγλωττιστή.

Μια σφαιρική μεταβλητή είναι χρήσιμη σε καταστάσεις όπου πολλές λειτουργίες έχουν πρόσβαση στα ίδια δεδομένα. Η χρήση μεγάλου αριθμού συνολικών μεταβλητών μπορεί να είναι προβληματική, καθώς ενδέχεται να υπάρξουν ανεπιθύμητες αλλαγές στην αξία μιας παγκόσμιας μεταβλητής.

  1. Οι τοπικές μεταβλητές ονομάζονται «τοπικές» επειδή είναι γνωστές μόνο στις δηλώσεις που γράφονται σε μια λειτουργία μέσα στην οποία δηλώνονται και δεν είναι γνωστές σε οποιαδήποτε άλλη λειτουργία που υπάρχει εκτός αυτού του μπλοκ λειτουργίας. Στην περίπτωση μιας παγκόσμιας μεταβλητής, είναι γνωστά σε κάθε λειτουργία που υπάρχει σε ένα πρόγραμμα. Ως εκ τούτου, ονομάζονται «παγκόσμια».
  2. Οι συνολικές μεταβλητές διατηρούν την αξία τους έως ότου το πρόγραμμα βρίσκεται στη φάση εκτέλεσης, καθώς αποθηκεύονται σε σταθερή θέση που αποφασίζεται από τον μεταγλωττιστή. Οι τοπικές μεταβλητές αποθηκεύονται στη στοίβα. Επομένως, δεν διατηρούν την αξία τους καθώς η "στοίβα" είναι δυναμική στη φύση, αλλά ο μεταγλωττιστής μπορεί να κατευθύνεται για να διατηρήσει την αξία τους, χρησιμοποιώντας τον "στατικό" τροποποιητή.
  3. Εάν μια παγκόσμια και μια τοπική μεταβλητή δηλωθούν με το ίδιο όνομα, τότε όλες οι δηλώσεις ενός μπλοκ κώδικα στο οποίο δηλώνεται η τοπική μεταβλητή θα αναφέρονται μόνο σε μια τοπική μεταβλητή και δεν θα έχουν αποτέλεσμα σε μια παγκόσμια μεταβλητή.
  4. Μια τοπική μεταβλητή καταστρέφεται όταν ο έλεγχος του προγράμματος εξέρχεται από το μπλοκ στο οποίο δηλώνεται η τοπική μεταβλητή. Ωστόσο, μια παγκόσμια μεταβλητή καταστρέφεται όταν ολοκληρωθεί ολόκληρο το πρόγραμμα.

Πλεονεκτήματα

Τοπική μεταβλητή

  • Το κύριο όφελος μιας τοπικής μεταβλητής είναι ότι δεν υπάρχει τυχαία αλλοίωση των δεδομένων. Η μεταβλητή δηλώνεται μέσα σε ένα μπλοκ και αυτό το μπλοκ κώδικα χρησιμοποιεί τη μεταβλητή και αποφεύγει τις ανεπιθύμητες παρενέργειες.
  • Η τοπική μεταβλητή καταναλώνει μνήμη για περιορισμένο χρονικό διάστημα, μόνο όταν εκτελείται το μπλοκ που περιέχει τη μεταβλητή.

Παγκόσμια μεταβλητή

  • Οι γενικές μεταβλητές είναι πολύ χρήσιμες όταν ασχολείσαι με διάφορες λειτουργίες του προγράμματος που χειρίζονται τα ίδια δεδομένα.
  • Οι αλλαγές που έπρεπε να εφαρμοστούν σε ολόκληρο το πρόγραμμα θα ήταν ευκολότερες με την εφαρμογή μιας παγκόσμιας μεταβλητής.
  • Μπορούμε να έχουμε πρόσβαση από οπουδήποτε ή μέσω οποιασδήποτε τυχαίας λειτουργίας του προγράμματος.

Μειονεκτήματα

Τοπική μεταβλητή

  • Το εύρος της τοπικής μεταβλητής περιορίζεται.
  • Απαγορεύει την κοινή χρήση δεδομένων.
  • Δεν είναι σε θέση να διατηρήσουν τα δεδομένα μεταξύ των κλήσεων επειδή δημιουργούνται και αφαιρούνται τοπικές μεταβλητές με κάθε είσοδο και έξοδο από το μπλοκ. Ωστόσο, ο στατικός τροποποιητής μπορεί να χρησιμοποιηθεί για τη διατήρηση των τιμών.

Παγκόσμια μεταβλητή

  • Η χρήση μεγάλου αριθμού συνολικών μεταβλητών μπορεί να οδηγήσει στη δημιουργία σφαλμάτων προγράμματος.
  • Το κύριο πρόβλημα που προκαλεί είναι η τυχαία εμφάνιση των αλλαγών που οφείλονται στις διαδεδομένες συνολικές μεταβλητές σε όλο το πρόγραμμα.
  • Θα μπορούσε επίσης να αυξηθεί η ανάγκη διενέργειας αναδρομολόγησης κώδικα, η οποία είναι μια πολύ εκτεταμένη διαδικασία όπου αναδιαρθρώνεται ολόκληρος ο κώδικας του προγράμματος.

Συμπέρασμα:

Οι τοπικές και οι συνολικές μεταβλητές είναι απαραίτητες και εξίσου απαιτούμενες κατά τη σύνταξη του προγράμματος. Ωστόσο, η διαπίστωση μεγάλου αριθμού μεταβλητών σε παγκόσμιο επίπεδο θα μπορούσε να είναι προβληματική σε ένα τεράστιο πρόγραμμα, καθώς μπορεί να προκαλέσει ανεπιθύμητες αλλαγές σε μια παγκόσμια μεταβλητή. και θα ήταν δύσκολο να προσδιοριστεί το τμήμα του προγράμματος που άλλαξε αυτό. Ως εκ τούτου, θα πρέπει να αποφύγετε τη δήλωση περιττών παγκόσμιων μεταβλητών.