void foo() {
static int x;
}
void bar() {
static int x;
}
int main() {
foo();
bar();
}
cevap
Her biri yalnızca bir tanesini görür. Bir değişken bu ilan ediyor scope dışından "görüldü" olamaz
, diğer taraftan, bu yaptıysak:.
sonrastatic int x;
void foo() {
static int x;
}
int main() {
foo();
}
foo()
sadece görür onun yerel x
; Küresel x
, onun tarafından "gizlendi". Ancak, diğerine yapılan değişiklikler diğerinin değerini etkilemez.
@FredOverflow: Bunu yakaladığınız için teşekkürler ... –
, C++ 'daki statik globals'tan daha iyi stil kabul edilen anonim ad alanlarıdır? "Statik int x;" nin iki kullanımı (bir küresel, bir yerel) sorunu zorlaştırıyor gibi görünüyor. – Flexo
@awoodlannd: Bu amaçla 'statik' kullanımı C++ (D.2/1) 'den kaldırılmıştır. İster daha iyi bir tarz olsun, sorduğunuz kişinin bu kullanımdan muaf tutularak kabul edilip edilmediğine bağlı olarak ... –
Bu kesinlikle gayet güzel. Pratikte, derleyicinin çıktısındaki değişkenin gerçek adı, function_bar_x
gibi bir şey olarak düşünülebilir, yani bunların çatışmaması için derleyicinizin sorumluluğundadır.
Değişkenler farklıdır, her işlevin kendi kapsamı vardır. Dolayısıyla, her iki değişken de sürecin ömrü boyunca sürse de, birbirleriyle etkileşime girmezler.
İki statik vars farklıdır.
Hiçbir şey hem değişkenler katılmalarının kapsama sahip ve çağrı
compilator benzersiz bir şekilde her değişkeni çevirir daki örnekte gibi foo_x
ve bar_x
aramaya değerlerini mantain, bu yüzden farklı tehdit edildiği gibi olur.
Bunu yapmak için kodunuzu bir kereden sonra okumak ve sürdürmek zor olacak çünkü bir kerede x
'a atıfta bulunulamayacaksınız.
- 1. C++ statik değişkeni
- 2. C/C++ Statik const yerel değişkeni
- 3. Farklı düzenlerde birkaç widget için aynı kimliği kullanırsam ne olur?
- 4. İki arabirim aynı varsayılan yöntemi içeriyorsa ne olur?
- 5. Farklı ad alanlarındaki aynı işlev adı
- 6. Aynı android projenin iki android modülü farklı destek kitaplığı sürümleri kullanıyorsa ne olur?
- 7. Aynı kısmi iki farklı uygulamada farklı davranır
- 8. statik dizi sınıf değişkeni "çoklu tanım" C++
- 9. Global.asax.cs ve Statik değişkeni
- 10. C++ vs C# statik değişkeni arasındaki fark nedir?
- 11. C++ 'da stack-only değişkeni mümkün mü?
- 12. kamu statik son değişkeni
- 13. Bu iki üst düzey işlev nasıl farklı?
- 14. Birden çok işlem aynı dosyayı yazmayı denediğinde ne olur?
- 15. C# Statik değişkeni DeploymentItem parametresi olarak kullanarak
- 16. Farklı libstdC++ sürümleri kullanan iki statik kitaplık
- 17. C++ 'da Çok Büyük Statik Değişkenlerin Saklanması
- 18. Neler: * C++ 'da ne anlama geliyor?
- 19. Farklı verilerle aynı iki tablo yapısını birleştir
- 20. Şablon statik değişkeni
- 21. Aynı değişken Oturumu .Net 4.5'da iki farklı Çözümünde nasıl kullanabilirim?
- 22. Statik değişkeni özel statik yöntem kullanarak başlatılıyor
- 23. Aynı değişiklikleri birden çok kez birleştirirsek ne olur? - TFS
- 24. const değişkeni değerini C++
- 25. C++ 'da statik üye bir kapsayıcıyı doldurun
- 26. jQuery.Cycle - aynı kapsayıcıda iki farklı efekt kullanın
- 27. Aynı düğüm bağımlılığının iki farklı sürümünü kullanma
- 28. statik hizmet nesnesi sıfır olur
- 29. İşlev C++
- 30. İşlev Parametresiyle aynı ada sahip bir Javascript Özel Değişkeni Ayarlama?
Bu kod verildi? Hiçbir şey değil. –
Aynı değişkeni bildirmiyorlar. İki farklı işlev asla aynı statik yerel değişkeni bildiremez. –