Συνιστάται, 2024

Επιλογή Συντάκτη

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Βασική διαφορά μεταξύ τοπικής και παγκόσμιας μεταβλητής.

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

Συμπέρασμα:

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

Top