Προς το περιεχόμενο

global vs static variables


Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημέρα στη κοινότητα.  Ψάχνω να απαντήσω σε ενα ερώτημα.

 

Θέλω να βρω τα μεινεκτήματα που έχει μια γλώσσα αν έχει μονάχα global μεταβλητές ή μονάχα static μεταβλητές.

 

Γενικά στο ιντερνετ βρήκα κάποια μειονεκτήματα που έχουν οι global πχ σαν μεταβλητές ή και οι static. Αλλα θεωρώ πως δεν μου δίνει την απάντηση στο ερώτημα μου.

 

 

Σας ευχαριστώ

Δημοσ.

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

 

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

Δημοσ.

  Θεωρητικα τοτε μιλοντας ουτε οι static ουτε οι global variables ειναι κατι κακο. Μπορουν ομως να εχουνε αρνητικα οταν δεν τις χρησιμοποιεις σωστα. 

 

  Και δεν υπαρχει γλωσσα που να εχει μονο static η μονο global variables οπως ανεφερες, ολες (?) υποστηριζουνε και τα δυο. 

  • Like 1
Δημοσ.

Και προσοχή μην σε πιάσει και το γυρίσεις χρησιμοποιώντας μόνο singletons.

+1. Γενικως alfas static μονο σε methods που υπολογιζουνε γυρνανε ενα αποτελεσμα. Ποτε για αποθηκευση δεδομενων. 

Δημοσ.

  Και δεν υπαρχει γλωσσα που να εχει μονο static η μονο global variables οπως ανεφερες, ολες (?) υποστηριζουνε και τα δυο. 

Η C δεν εχει static (εννοώ static member of class) αφου δεν εχει class.

Οι C#, Java  δεν εχουν global. 

Δημοσ.

Καλημέρα στη κοινότητα. Ψάχνω να απαντήσω σε ενα ερώτημα.

 

Θέλω να βρω τα μεινεκτήματα που έχει μια γλώσσα αν έχει μονάχα global μεταβλητές ή μονάχα static μεταβλητές.

 

Γενικά στο ιντερνετ βρήκα κάποια μειονεκτήματα που έχουν οι global πχ σαν μεταβλητές ή και οι static. Αλλα θεωρώ πως δεν μου δίνει την απάντηση στο ερώτημα μου.

 

Σας ευχαριστώ

Που έψαξες και δεν σε ικανοποίησε η απαντήση που διάβασες;

 

Η C δεν εχει static (εννοώ static member of class) αφου δεν εχει class.

...

 

H C έχει static vars (μέσα σε functions και μέσα σε source-modules).

  • Like 1
Δημοσ.

@alfas δεν καταλαβαίνω την ερώτησή σου.

 

Πρώτον τι εννοείς "μονάχα global" και "μονάχα static"? Ότι άλλου είδους μεταβλητές (π.χ. απλά με local scope) δεν είναι διαθέσιμες;

 

Δεύτερον για ποιό λόγο ψάχνεις να βρεις απάντηση σ' αυτή την πραγματικά περίεργη ερώτηση; Για σένα ή για άλλη χρήση;

 

Και τρίτον οι global και οι static μεταβλητές πάνω κάτω είναι το ίδιο πράγμα σαν υλοποίηση, με μόνη (ουσιαστική βέβαια) διαφορά το scope.

  • Like 1
Δημοσ.

Και τρίτον οι global και οι static μεταβλητές πάνω κάτω είναι το ίδιο πράγμα σαν υλοποίηση, με μόνη (ουσιαστική βέβαια) διαφορά το scope.

 

Μιλώντας για υλοποίηση, οι global/static αποθηκεύονται σε διαφορετικά σημεία από τις αυτόματες.

Οι global/static βρίσκονται είτε στο data (αρχικοποιημένες) είτε στο BSS segment (μη αρχικοποιημένες)

και δεσμεύονται από τον compiler κατά το compilation, σε αντίθεση με τις αυτόματες, οι οποίες ξεκι-

νάνε να ζουν και πεθαίνουν κατά το runtime, με τη δημιουργία και καταστροφή των stack frames. Αυτά

για να σε συμπληρώσω και να ρωτήσω αν θέλει κάτι τέτοιο ο OP.

  • Like 1
Δημοσ.

Καλημέρα στη κοινότητα.  Ψάχνω να απαντήσω σε ενα ερώτημα.

 

Θέλω να βρω τα μεινεκτήματα που έχει μια γλώσσα αν έχει μονάχα global μεταβλητές ή μονάχα static μεταβλητές.

 

Γενικά στο ιντερνετ βρήκα κάποια μειονεκτήματα που έχουν οι global πχ σαν μεταβλητές ή και οι static. Αλλα θεωρώ πως δεν μου δίνει την απάντηση στο ερώτημα μου.

 

 

Σας ευχαριστώ

Τι πλεονεκτήματα και μειονεκτήματα βρήκες (μπορώ να φανταστώ κάποια);

 

Το ερώτημά σου δε μου φαίνεται λογικό. Αν μία γλώσσα έχει μόνο global ή static μεταβλητές,

τότε μαζεύει όλα τα πλεονεκτήματα και μειονεκτήματα που φέρουν οι global και static μεταβλητές

ΣΥΝ την απουσία των πλεονεκτημάτων και μειονεκτημάτων (κυρίως πλεονεκτημάτων) των αυτό-

ματων μεταβλητών.

 

Επίσης όταν αναφέρεσαι σε υπέρ και κατά αναφέρεσαι στον τρόπο χρήσης ή στην υλοποίηση από

κάτω, δηλαδή compiler;

Δημοσ.

Οτι λεει ο defacer.Η μοναδική διαφορά είναι στο scope.Αν είναι global φαίνονται από παντού...Aν είναι static σε συνάρτηση φαίνονται μόνο μέσα στη συνάρτηση,αλλιως μονο στο source unit που ορίζονται

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...