type qualifiers storage classes c
Σημασία των χαρακτηριστικών τύπου και κατηγορίες αποθήκευσης στο C ++.
Σε αυτό Αποκλειστική σειρά εκπαίδευσης C ++ , θα επεκτείνουμε περαιτέρω το θέμα των μεταβλητών και θα δούμε τους προσδιοριστές τύπων και τις κατηγορίες αποθήκευσης στο C ++ σε αυτό το σεμινάριο. Αν και αυτό είναι ένα μικρό θέμα, είναι πολύ σημαντικό και σημαντικό όσον αφορά τον προγραμματισμό C ++.
Οι προσδιοριστές τύπου στο C ++ δεν αλλάζουν την έννοια των μεταβλητών ή οντοτήτων με τις οποίες χρησιμοποιούνται, αλλά προσθέτουν μόνο επιπλέον πληροφορίες στην οντότητα.
Τι θα μάθετε:
Πληκτρολογήστε Προκριματικά σε C ++
Ο προσδιοριστής τύπου στο C ++ προσθέτει επιπλέον ιδιότητες στη μεταβλητή, όπως μια μεταβλητή που είναι σταθερή ή πτητική.
Οι προσδιοριστές τύπου εκφράζουν τον τρόπο πρόσβασης μιας μεταβλητής ή όπου μια μεταβλητή αποθηκεύεται στη μνήμη διατηρώντας την έννοια ή την ερμηνεία της μεταβλητής ίδια. Κατά κάποιο τρόπο, οι τύποι προσδιοριστών προσθέτουν περισσότερη βελτίωση στις μεταβλητές.
Στο C ++, ο προσδιοριστής τύπου καθορίζεται λίγο πριν από τον προσδιοριστή τύπου (τύπος δεδομένων) της μεταβλητής.
Οι προκριματικοί τύποι στο C ++ ταξινομούνται όπως φαίνεται παρακάτω:
# 1) υπ
Ο προσδιοριστής τύπου 'const' είναι ο ορισμός των αντικειμένων του τύπου const. Ένα αντικείμενο const ή μια μεταβλητή δεν μπορεί να τροποποιηθεί μόλις δηλωθεί. Εάν γίνει προσπάθεια τροποποίησης του αντικειμένου const ή της μεταβλητής, τότε ο μεταγλωττιστής δημιουργεί ένα σφάλμα. Έχουμε ήδη δει για σταθερές / κυριολεκτικά στο προηγούμενο σεμινάριό μας.
Ο ορισμός των σταθερών που χρησιμοποιούν τη λέξη-κλειδί «const» αντιστοιχεί στον τύπο προσδιοριστή «const».
# 2) πτητικό
Ο προσδιοριστής τύπου 'πτητικό' σημαίνει ότι η τιμή της μεταβλητής που χαρακτηρίζεται πτητική μπορεί να αλλάξει με άλλους τρόπους που δεν καθορίζονται από το πρόγραμμα. Οι μεταβλητές που μεταβάλλονται συνήθως οφείλονται σε κάποιους εξωτερικούς παράγοντες και όχι απαραίτητα λόγω του προγράμματος. Με άλλα λόγια, έχουν ευμετάβλητη φύση.
Για παράδειγμα, μια μεταβλητή που διαβάζει τη θερμοκρασία σε μια πραγματική λέξη μπορεί να γίνει πτητική καθώς η θερμοκρασία ανάγνωσης μπορεί να μην ελέγχεται πλήρως από το πρόγραμμα.
# 3) μεταβλητή
Το 'μεταβλητό' χαρακτηριστικό τύπου καθιστά τα μέλη ή τη μεταβλητή τροποποιήσιμη.
Ο μεταβλητός προσδιοριστής εφαρμόζεται συνήθως σε μη στατικά μέλη κλάσης τύπου non-const και non-αναφοράς. Σύμφωνα με συγκεκριμένες καταστάσεις, ίσως χρειαζόμαστε κάποιες μεταβλητές να παραμείνουν αμετάβλητες (δεν μπορούν να αλλάξουν) και ορισμένες μεταβλητές να είναι μεταβλητές. Αυτός ο τύπος προσδιοριστή βοηθά πολύ όταν θέλουμε μεταβλητά χαρακτηριστικά.
Μαθήματα αποθήκευσης σε C ++
Μέχρι στιγμής, έχουμε συζητήσει λεπτομερώς όλες τις μεταβλητές C ++. Έχουμε δει ότι οι μεταβλητές δηλώνονται με τους αντίστοιχους τύπους δεδομένων τους και στη συνέχεια χρησιμοποιούνται στο πρόγραμμα. Για να ορίσουμε πλήρως μια μεταβλητή, απαιτούμε επίσης κλάσεις αποθήκευσης εκτός από τους τύπους δεδομένων τους.
Αν και δεν έχουμε καθορίσει τάξεις αποθήκευσης μέχρι τώρα για μεταβλητές, υπήρχε μια προεπιλεγμένη κατηγορία αποθήκευσης 'auto' η οποία εφαρμόστηκε σε όλες τις μεταβλητές.
Τι είναι λοιπόν τα μαθήματα αποθήκευσης;
Οι κλάσεις αποθήκευσης καθορίζουν τον τρόπο επεξεργασίας της μεταβλητής ή μιας συνάρτησης από τον μεταγλωττιστή και τον τρόπο κατανομής της αποθήκευσης για μια μεταβλητή. Καθορίζει την ορατότητα ή το εύρος και τη διάρκεια ζωής μιας μεταβλητής. Η διάρκεια ζωής της μεταβλητής είναι το χρονικό διάστημα που η μεταβλητή θα παραμείνει ενεργή.
Η ορατότητα ή το εύρος της μεταβλητής είναι σε ποιες λειτουργίες ή ενότητες η μεταβλητή θα είναι προσβάσιμη. Αυτές οι κλάσεις αποθήκευσης καθορίζονται πριν από τον τύπο δεδομένων της μεταβλητής.
Στο C ++, έχουμε τις ακόλουθες κατηγορίες αποθήκευσης:
# 1) Αυτόματη κλάση αποθήκευσης
Αυτή είναι η προεπιλεγμένη κατηγορία αποθήκευσης. Η κλάση αποθήκευσης 'Αυτόματο' εφαρμόζεται στις τοπικές μεταβλητές και εκχωρείται αυτόματα από τον μεταγλωττιστή σε τοπικές μεταβλητές. Οι τοπικές μεταβλητές που προηγούνται της λέξης-κλειδιού «αυτόματη» παραμένουν ενεργές στη συνάρτηση στην οποία δηλώνονται και βγαίνουν εκτός εμβέλειας μόλις κλείσει η συνάρτηση.
Εάν οι μεταβλητές που έχουν 'αυτόματη' κλάση αποθήκευσης δεν έχουν αρχικοποιηθεί ή δεν έχουν εκχωρηθεί καμία τιμή, τότε έχουν τιμές απορριμμάτων ή απροσδιόριστες.
Ας δούμε ένα παράδειγμα αυτόματων μεταβλητών σε ένα πρόγραμμα C ++.
#include using namespace std; int main() { int i; float f; cout<<'Variable i = '< # 2) Καταχώριση κλάσης αποθήκευσης Όταν έχουμε μια απαίτηση ότι μια μεταβλητή χρειάζεται ταχύτερη πρόσβαση, τότε χρησιμοποιούμε την κατηγορία αποθήκευσης μητρώου. Έτσι, αντί να αποθηκεύονται οι μεταβλητές στη μνήμη τυχαίας προσπέλασης (RAM), αυτές οι μεταβλητές αποθηκεύονται στον καταχωρητή CPU και έχουν μέγεθος ίσο με αυτό ενός μητρώου.
Επιπλέον, καθώς αυτές οι μεταβλητές δεν έχουν θέση μνήμης, δεν μπορούμε να χρησιμοποιήσουμε τον τελεστή «&» με αυτές τις μεταβλητές.
Η ύπαρξη μιας μεταβλητής με την κατηγορία αποθήκευσης μητρώου δεν εγγυάται ότι η μεταβλητή θα αποθηκεύεται πάντα στο μητρώο. Αντίθετα, υποθέτει απλώς ότι η μεταβλητή μπορεί να αποθηκευτεί σε ένα μητρώο και εξαρτάται πλήρως από το υλικό και την εφαρμογή.
Οι μεταβλητές μητρώου έχουν το εύρος και τη διάρκεια ζωής παρόμοια με τις αυτόματες μεταβλητές.
Για παράδειγμα,
#include using namespace std; int main() { int i; register float f; cout<<'Variable i = '< # 3) Εξωτερική κλάση αποθήκευσης Η εξωτερική κλάση αποθήκευσης απαιτείται όταν οι μεταβλητές πρέπει να μοιραστούν σε πολλά αρχεία. Οι εξωτερικές μεταβλητές έχουν καθολικό εύρος και αυτές οι μεταβλητές είναι ορατές έξω από το αρχείο στο οποίο δηλώνονται.
Καθώς οι εξωτερικές μεταβλητές είναι οι μεταβλητές που δηλώνονται και ορίζονται έξω σε άλλο αρχείο, δεν έχουν αρχικοποιηθεί.
Οι εξωτερικές μεταβλητές έχουν παγκόσμιο εύρος και η διάρκεια ζωής των εξωτερικών μεταβλητών είναι όσο το πρόγραμμα στο οποίο δηλώνεται ως τερματισμένο.
Οι εξωτερικές μεταβλητές μπορούν να δηλωθούν ως εξής:
extern int temp; int temp;
Στο παραπάνω παράδειγμα, έχουμε δύο δηλώσεις μεταβλητών με το ίδιο όνομα, αλλά η πρώτη είναι η εξωτερική μεταβλητή που ορίζεται αλλού. Αυτή η εξωτερική μεταβλητή θα είναι χρήσιμη όταν συμπεριλαμβάνουμε το αρχείο προέλευσης στο οποίο η εξωτερική μεταβλητή temp ορίζεται στο πρόγραμμά μας.
# 4) Κατηγορία στατικής αποθήκευσης
Η τάξη στατικής αποθήκευσης λέει στον μεταγλωττιστή να διατηρήσει την τιμή της μεταβλητής καθ 'όλη τη διάρκεια ζωής του προγράμματος. Οι στατικές μεταβλητές είναι παρόμοιες με τις τοπικές μεταβλητές, αλλά προηγούνται μια «στατική» λέξη-κλειδί.
Σε αντίθεση με τις τοπικές μεταβλητές που βγαίνουν εκτός πεδίου μετά την έξοδο της συνάρτησης, οι στατικές μεταβλητές δεν βγαίνουν από το πεδίο εφαρμογής όταν μια συνάρτηση ή έξοδος μπλοκ και οι τιμές τους διατηρούνται μεταξύ των κλήσεων συνάρτησης.
Οι στατικές μεταβλητές αρχικοποιούνται και ο αποθηκευτικός χώρος τους εκχωρείται μόνο μία φορά στη διάρκεια ζωής ενός προγράμματος. Οι στατικές μεταβλητές αρχικοποιούνται στο 0 εάν δεν έχουν ήδη αρχικοποιηθεί κατά τη δήλωση.
Ας δούμε το ακόλουθο παράδειγμα για να κατανοήσουμε καλύτερα την κατηγορία Static Storage.
#include using namespace std; void printvar() { static int var; var++; cout<<'static variable var = '< Παραγωγή:
printvar κλήση 1: στατική μεταβλητή var = 1
printvar call 2: στατική μεταβλητή var = 2
printvar call 3: στατική μεταβλητή var = 3
printvar call 4: στατική μεταβλητή var = 4
Στον παραπάνω κώδικα, έχουμε μια συνάρτηση «printvar» στην οποία έχουμε δηλώσει μια στατική μεταβλητή var του τύπου int. Στη συνέχεια αυξάνουμε αυτήν τη μεταβλητή και την εκτυπώνουμε. Στην κύρια λειτουργία, καλούμε τη λειτουργία printvar τέσσερις φορές.
Τώρα ελέγξτε την έξοδο. Η έξοδος δείχνει ότι με κάθε λειτουργία κλήσης η στατική μεταβλητή var αυξάνεται κατά 1 από την προηγούμενη τιμή της. Αυτή είναι η κατηγορία στατικής αποθήκευσης που βοηθά τη μεταβλητή να διατηρήσει την αξία της μεταξύ των κλήσεων λειτουργίας. Η στατική μεταβλητή δεν επαναρυθμίζεται για κάθε κλήση λειτουργίας.
Πρέπει επίσης να παρατηρήσουμε ότι στη συνάρτηση printvar, μόλις δηλώσαμε τη στατική μεταβλητή και δεν την αρχικοποιήσαμε. Είναι αξιοσημείωτο ότι όταν δεν αρχικοποιούμε τις στατικές μεταβλητές αντιστοιχίζονται με την αρχική τιμή 0.
Σημείωση: Η τάξη στατικής αποθήκευσης μπορεί επίσης να εφαρμοστεί σε καθολικές μεταβλητές. Σε αυτήν την περίπτωση, η μεταβλητή θα έχει παγκόσμιο εύρος και επιπλέον στατικό χώρο αποθήκευσης.
# 5) Μεταβλητή κλάση αποθήκευσης
Η μεταβλητή κατηγορία αποθήκευσης εφαρμόζεται μόνο στα αντικείμενα κλάσης. Εφαρμόζοντας την μεταβλητή κλάση αποθήκευσης, το μέλος ενός αντικειμένου μπορεί να παρακάμψει τη λειτουργία μέλους «const». Αυτό σημαίνει ότι ένα μεταβλητό μέλος ή αντικείμενο μπορεί να τροποποιηθεί από μια συνάρτηση μέλους που είναι «const».
Θα μάθουμε περισσότερα για τις λειτουργίες const και τα αντικείμενα, καθώς και τα μεταβλητά μέλη στα μετέπειτα σεμινάρια μας όταν μαθαίνουμε για αντικειμενοστραφή προγραμματισμό στο C ++.
συμπέρασμα
Αυτό αφορά όλους τους προσδιοριστές τύπων και τις κατηγορίες αποθήκευσης στο C ++. Ελπίζουμε να μπορέσαμε να καταστήσουμε σαφείς όλες τις έννοιες σχετικά με τις κατηγορίες αποθήκευσης και τους προσδιοριστές τύπων μέσω αυτού του σεμιναρίου.
το καλύτερο απομακρυσμένο spyware για κινητά τηλέφωνα
Στο επερχόμενο σεμινάριό μας, θα μάθουμε περισσότερα για τους διάφορους χειριστές που χρησιμοποιούνται στο C ++ μαζί με τη χρήση τους.
=> Δείτε την ολοκληρωμένη σειρά προπόνησης C ++ εδώ
Συνιστώμενη ανάγνωση
- Μεταβλητές σε C ++
- Μεταβλητές Python
- Java Interface και Abstract Class Tutorial με παραδείγματα
- Πληκτρολογήστε Μετατροπές σε C ++
- Μεταβλητές VBScript: Τρόπος δήλωσης και χρήσης μεταβλητών - VBScript Dim
- Μεταβλητές και συναρτήσεις JMeter
- 10 ΚΑΛΥΤΕΡΕΣ δωρεάν παροχές Cloud Storage (Online Storage 2021)
- Τύποι δοκιμών μετεγκατάστασης: Με σενάρια δοκιμής για κάθε τύπο