Ποια είναι η διαφορά μεταξύ τοπικών στατικών και παγκόσμιων στατικών μεταβλητών;


Απάντηση 1:

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

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

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


Απάντηση 2:

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

Παγκόσμια: οι μεταβλητές αυτές είναι προσβάσιμες από οπουδήποτε.

Τοπική: οι μεταβλητές αυτές μπορούν να προσεγγιστούν μόνο μέσα στα πεδία τους.

Έτσι βλέπετε ότι το SCOPES & LIFETIMES είναι δύο διαφορετικά πράγματα.

Επομένως, μια μεταβλητή global_static είναι απλώς μια στατική μεταβλητή που παίρνει μνήμη για όλη την ώρα και μπορεί να προσπελαστεί οποιαδήποτε στιγμή ή οπουδήποτε.

Και μια μεταβλητή local_static είναι απλώς μια στατική μεταβλητή που δεν μπορεί να προσεγγιστεί εκτός του πεδίου αν και ο μεταγλωττιστής δεν βελτιστοποιεί αυτόν τον κώδικα, τότε θα παραμείνει στη μνήμη περιττή.


Απάντηση 3:

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

Παγκόσμια: οι μεταβλητές αυτές είναι προσβάσιμες από οπουδήποτε.

Τοπική: οι μεταβλητές αυτές μπορούν να προσεγγιστούν μόνο μέσα στα πεδία τους.

Έτσι βλέπετε ότι το SCOPES & LIFETIMES είναι δύο διαφορετικά πράγματα.

Επομένως, μια μεταβλητή global_static είναι απλώς μια στατική μεταβλητή που παίρνει μνήμη για όλη την ώρα και μπορεί να προσπελαστεί οποιαδήποτε στιγμή ή οπουδήποτε.

Και μια μεταβλητή local_static είναι απλώς μια στατική μεταβλητή που δεν μπορεί να προσεγγιστεί εκτός του πεδίου αν και ο μεταγλωττιστής δεν βελτιστοποιεί αυτόν τον κώδικα, τότε θα παραμείνει στη μνήμη περιττή.


Απάντηση 4:

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

Παγκόσμια: οι μεταβλητές αυτές είναι προσβάσιμες από οπουδήποτε.

Τοπική: οι μεταβλητές αυτές μπορούν να προσεγγιστούν μόνο μέσα στα πεδία τους.

Έτσι βλέπετε ότι το SCOPES & LIFETIMES είναι δύο διαφορετικά πράγματα.

Επομένως, μια μεταβλητή global_static είναι απλώς μια στατική μεταβλητή που παίρνει μνήμη για όλη την ώρα και μπορεί να προσπελαστεί οποιαδήποτε στιγμή ή οπουδήποτε.

Και μια μεταβλητή local_static είναι απλώς μια στατική μεταβλητή που δεν μπορεί να προσεγγιστεί εκτός του πεδίου αν και ο μεταγλωττιστής δεν βελτιστοποιεί αυτόν τον κώδικα, τότε θα παραμείνει στη μνήμη περιττή.