Στατικός στον προγραμματισμό Γ

Static C Programming



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

στατικός {τύπος δεδομένων} {όνομα μεταβλητού}







Στατικές τοπικές μεταβλητές

Όταν μια μεταβλητή σε μια συνάρτηση είναι στατική, η μεταβλητή διατηρεί την τιμή της μεταξύ των κλήσεων συνάρτησης.



// Παράδειγμα1.γ

#περιλαμβάνω

intδιασκέδαση 1()
{

intμετρώ=0?
μετρώ++;
ΕΠΙΣΤΡΟΦΗμετρώ?
}

intδιασκέδαση2()
{
στατικός intμετρώ=0?
μετρώ++;
ΕΠΙΣΤΡΟΦΗμετρώ?
}

intκύριος()
{
printf ('fun1 Επιστρέφει η 1η κλήση: %d n',διασκέδαση 1())?
printf ('fun1 Η 2η κλήση επιστρέφει: %d n n',διασκέδαση 1())?

printf ('fun2 Επιστρέφει η 1η κλήση: %d n',διασκέδαση2())?
printf ('fun2 Η 2η κλήση επιστρέφει: %d n',διασκέδαση2())?

ΕΠΙΣΤΡΟΦΗ 0?
}


Στο Παράδειγμα 1.γ, έχουμε δύο συναρτήσεις: διασκέδαση1 () και fun2 () Το Σε διασκέδαση1 () , δηλώνουμε μία μεταβλητή (count) και την αρχικοποιούμε στο 0. Στη συνέχεια, αυξάνουμε τη μεταβλητή μέτρησης και επιστρέφουμε την τιμή που προκύπτει. Χρησιμοποιώντας κύριος() , καλούμε διασκέδαση1 () δύο φορές, και κάθε φορά, επιστρέφεται μια τιμή 1 επειδή η μεταβλητή καταμέτρησης διαγράφεται όταν η κλήση προς διασκέδαση1 () ολοκληρώθηκε. Σε fun2 () δηλώσαμε τη μεταβλητή μέτρησης ως στατική μεταβλητή. Ως εκ τούτου, η αξία του διατηρείται. Χρησιμοποιώντας κύριος() , καλούμε fun2 () δύο φορές: την πρώτη φορά, επιστρέφεται η τιμή 1 και τη δεύτερη, επιστρέφεται η τιμή 2.



Στατικές παγκόσμιες μεταβλητές

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





Στατικές λειτουργίες

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

Αρχικοποίηση στατικών μεταβλητών

Εάν μια στατική μεταβλητή δεν έχει ξεκινήσει ρητά, τότε αρχικοποιείται ως 0.



// Παράδειγμα2.γ

#περιλαμβάνω

intκύριος()
{
στατικός intΕγώ?

printf ('Τιμή i: %d n',Εγώ)?

ΕΠΙΣΤΡΟΦΗ 0?
}


Στο Παράδειγμα2.γ, δηλώσαμε μια στατική μεταβλητή i που δεν έχει αρχικοποιηθεί. Ωστόσο, επειδή η μεταβλητή είναι στατική, αρχικοποιείται αυτόματα στο 0.

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

// Παράδειγμα3.γ

#περιλαμβάνω

intδιασκέδαση 1()
{
ΕΠΙΣΤΡΟΦΗ 5?
}

intκύριος()
{
στατικός intΕγώ=διασκέδαση 1()?
printf ('Τιμή i: %d n',Εγώ)?
ΕΠΙΣΤΡΟΦΗ 0?
}


Στο Παράδειγμα3.γ, προσπαθούμε να αρχικοποιήσουμε μια στατική μεταβλητή χρησιμοποιώντας την τιμή επιστροφής του διασκέδαση1 () Το Ωστόσο, όπως μπορείτε να δείτε, ένα σφάλμα επιστρέφεται όταν καταρτίζεται ο κώδικας.

Περίληψη

Η διάρκεια ζωής μιας στατικής μεταβλητής και η διάρκεια ζωής του προγράμματος είναι ίσες.

Εάν μια στατική μεταβλητή δεν είναι αρχικοποιημένη, τότε θα λάβει μια προεπιλεγμένη τιμή 0.

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