Αλλά εάν χρειάζεστε την πρόσβαση στη μεταβλητή από όλες τις λειτουργίες το σε ολόκληρο αρχείο πηγής, αυτό μπορεί επίσης καμένος με τη στατική λέξη κλειδί, αλλά με την τοποθέτηση του καθορισμού έξω από όλες τις λειτουργίες. Παραδείγματος χάριν:
#include <stdio.h>
static int num = 10; /* θα είναι προσιτός από το ολόκληρο αρχείο πηγής */
int main(void)
{
printf("The Number Is: %d\n", num);
return 0;
}
Και υπάρχουν επίσης περιπτώσεις όπου μια μεταβλητή πρέπει να είναι προσιτή από το ολόκληρο πρόγραμμα, το οποίο μπορεί να αποτελεσθεί από διάφορα αρχεία πηγής. Αυτό καλείται σφαιρικό μεταβλητό και πρέπει να αποφευχθεί όταν δεν απαιτείται.
Αυτό γίνεται επίσης με την τοποθέτηση του καθορισμού έξω από όλες τις λειτουργίες, αλλά χωρίς χρησιμοποίηση της στατικής λέξης κλειδιού:
#include <stdio.h>
int num = 10; /* θα είναι προσιτός από το ολόκληρο πρόγραμμα! */
int main(void)
{
printf("The Number Is: %d\n", num);
return 0;
}
Υπάρχει επίσης η extern λέξη κλειδί, η οποία χρησιμοποιείται για την πρόσβαση των σφαιρικών μεταβλητών σε άλλες ενότητες. Υπάρχουν επίσης μερικοί χαρακτηριστές που μπορείτε να προσθέσετε στους μεταβλητούς ορισμούς. Ο σημαντικότερος τους είναι const. Μια μεταβλητή που ορίζεται ως const δεν μπορεί να τροποποιηθεί.
Υπάρχουν δύο περισσότεροι τροποποιητές που λιγότερο συνήθως χρησιμοποιούνται. Ο τροποποιητής πτητικών ουσιών και καταλόγων. Ο πτητικός τροποποιητής απαιτεί το μεταγλωττιστή για να έχει πρόσβαση πραγματικά στη μεταβλητή κάθε φορά που διαβάζεται. Μπορεί να μην βελτιστοποιήσει τη μεταβλητή με την τοποθέτηση του σε έναν κατάλογο ή έτσι. Αυτό χρησιμοποιείται κυρίως για πολυνηματώδη και διακόπτει τους σκοπούς επεξεργασίας κ.λπ....
Ο τροποποιητής καταλόγων ζητά από το μεταγλωττιστή για να βελτιστοποιήσει τη μεταβλητή σε έναν κατάλογο. Αυτό είναι μόνο δυνατό με τις αυτόματες μεταβλητές και σε πολλές περιπτώσεις ο μεταγλωττιστής μπορεί καλύτερα να επιλέξει τις μεταβλητές που βελτιστοποιούν στους καταλόγους, έτσι αυτή η λέξη κλειδί είναι πεπαλαιωμένη. Η μόνη άμεση συνέπεια της παραγωγής ενός μεταβλητού καταλόγου είναι ότι η διεύθυνσή της δεν μπορεί να ληφθεί.
Ο πίνακας των μεταβλητών, που δίνεται στην επόμενη σελίδα περιγράφει την κατηγορία αποθήκευσης τύπου πέντε κατηγοριών αποθήκευσης.
Στον πίνακα βλέπουμε ότι η λέξη κλειδί extern τοποθετείται σε δύο σειρές. Η extern λέξη κλειδί χρησιμοποιείται στις λειτουργίες για να δηλώσει μια στατική εξωτερική μεταβλητή που καθορίζεται αλλού.
Μεταβλητή κατηγορία αποθήκευσης |
Ορισμένος ως |
Πεδίο |
Κατηγορία |
Λέξη κλειδί |
Αυτόματος |
Η λέξη κλειδί είναι προαιρετική |
Προσωρινός |
Σε μια λειτουργία |
Τοπικός |
Στατικός |
στατικός |
Προσωρινός |
Σε μια λειτουργία |
Τοπικός |
Κατάλογος |
κατάλογος |
Προσωρινός |
Σε μια λειτουργία |
Τοπικός |
Εξωτερικός |
Προαιρετικός |
Μόνιμος |
Έξω από μια λειτουργία |
Σφαιρικός (όλα τα αρχεία) |
Εξωτερικός |
Στατικός |
Μόνιμος |
Έξω από μια λειτουργία |
Σφαιρικός (ένα αρχείο) |
|