C de değişkenler hakkında?

Endorfin35+

Kayıtsız Üye
Katılım
1 Mayıs 2020
Mesajlar
4,478
Vakit buldukça sindire sindire öğrenme faaliyetlerime devam ediyorum.

Değişkenleri inceler iken şu bilgiye ulaştım;

"Değişken tanımlayıcıları


C, aşağıda gösterilen 7 kelimeyi değişken adlarından önce tanımlayarak size değişkenleri farklı şekilde kullanma olanağı sağlar.


. auto
. extern
. register
. static
. const
. volatile
. restrict (C99)"

Kaynak : https://www.bilgigunlugum.net/prog/cprog/2c_degisken#c_degisken07


Benim sadece const tanımlayıcısının varlığından haberim vardı... Diğer tanımlayıcılar açıklanmış ama öylesine örneklenmiş. Gerçekte ne işe yarar hiçbir fikrim yok. Şimdi sorum şu bunlardan karşıma çıkacak olan, üzerinde durmam gerekenler hangileri?
 
Bunlardan sadece extern, static, ve const yaygın kullanılıyor. Diğerleri derleyicinin daha iyi optimizasyon yapması için, veya yapmaması için yönergeler veriyor.
 
Peki bir sorum daha var...

Seneryo 1 :

Global değişken tanımladım ve iki fonksiyon içinde kullandım...

Seneryo 2 :

Aynı değişkeni ilk fonksiyon içinde lokal tanımladım ve diğer fonksiyona argüman olarak gönderdim....

---

İki durumda da yapmak istediğim işlemi yaptım. Peki hafıza kullanımı açısından bir fark var mı? Global değişken baştan ram de yer kaplıyor ve sabit kalır iken local değişken ihtiyaç olduğunda rem kullanım sonra o alanı boşa mı çıkartıyor?

Aklıma takılan diğer bir konu ise local yada global değişken kullanımının program hafızası yönünden bir etkisi var mıdır?
 
Global olarak tanımlanan değişkenler, program çalışırken daha fazla hafıza kullanmasına sebep olur. Lokal değişkenler stack üzerinde yer alır ve programın hafıza kullanımını etkilemez.

Modern MMU (memory management unit) içeren işlemcilerde, her çalışan uygulama programına ayrılan stack miktarı, işletim sistemi tarafından otomatik olarak ve ihtiyacak göre artırılıp azaltılır, programı yazanın bu işlere kafa yormasına gerek yok. Aynı şekilde istediğin hafızayı programın kullanımı için talep edebilirsin ve işletim sistemi de bu miktarı tahsis eder. Ama kernel mode aygıt sürücüleri için (device driver) işler çok farklı. Hem stack miktarı son derece kısıtlı hem de driver'in kullanımı için hafıza talep ederken değişik değişik türler arasında uygun olanını seçmen gerekiyor ve bu talebin karşılanamama durumu da olabiliyor.
 

Forum istatistikleri

Konular
7,721
Mesajlar
128,503
Üyeler
3,118
Son üye
konce

Son kaynaklar

Son profil mesajları

Python Geliştirmeye eklediğim yapay zeka sunucusu, yeni başlayanlar için roket etkisi
Bir insanın zeka seviyesinin en kolay tesbiti, sorduğu sorulardır.
yapay zeka interneti yedi bitirdi, arama motoru kullanan, forumlara yazan kaldı mı ?
Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
az bilgili çok meraklı
Back
Top