C Dilinde Global ve Yerel Değişkenler

Bugünkü konu, C dilinde global ve yerel değişkenler ile static değişkenlerde genel bir sıkıntı olduğunu biliyorum. En azından öyle olduğunu bizim dönemden tahmin ediyorum. Bu yüzden bu konuyu yazmaya karar verdim. Yeni başlayanlar için ilaç gibi bir konu bence 😉


Programa geçmeden önce bu değişkenleri açıklarsam daha faydalı olacağını düşünüyorum. Global değişkenler, herhangi bir kod bloğu içinde tanımlanmazlar. Bu yüzdendir ki tüm bloklar içerisinden erişilebilirler. Yerel değişkenler ise bir kod bloğu içinde tanımlanırlar ve sadece tanımlandığı kod bloğu içerisinde erişilebilirler. Bu kadar özet bilgiden sonra programı inceleyebilecek seviyede bir bilgi birikimine sahip olduğumuzu düşünüyorum.


#include
void a();
void b();                          //global değişkenler
void c();
int x=1;
void main()
{
int x=5;                     //yerel değişken
printf(“x=%dn”,x);
{
int x=7;
printf(“x=%dn”,x);
}
printf(“x=%dn”,x);
a();
b();
c();
a();
b();
c();
printf(“x=%dn”,x);
}
void a()
{
int x=25;
printf(“x=%dn”,x);
x++;
printf(“x=%dn”,x);
}
void b()
{
static int x=50;
printf(“x=%dn”,x);
x++;
printf(“x=%dn”,x);
}
void c()
{
printf(“x=%dn”,x);
x*=10;
printf(“x=%dn”,x);
}

Gördüğünüz üzere program üzerinde global değişkenleri ve yerel değişkenleri gösterdim. İlk printf komutu içinde x=5 yazacaktır, ikincisinde 7, üçüncüde ise tekrar 5. Çünkü x=7 değeri sadece o blok içinde geçerlidir, dışarıdan  ulaşılamaz. Ekran çıktısını vereyim ben, sonra anlatacak önemli bir nokta daha var.

 

x=5                                           1.satır
x=7                                           2.satır
x=5                                           3.satır
x=25                                         4.satır
x=26                                         5.satır
x=50                                         6.satır
x=51                                         7.satır
x=1                                           8.satır
x=10                                         9.satır
x=25                                         10.satır
x=26                                         11.satır
x=51                                         12.satır
x=52                                         13.satır
x=10                                         14.satır
x=100                                       15.satır
x=5 16.satır
Devam etmek için bir tuşa basın. . .

Üçüncü satıra kadar olan bölüm main fonksiyonu içinde yazılmış bölüm. Diğer kısımlar ise fonksiyonlarda yazılmış kısımlar. Baktığımız zaman 4. satıra, x=25 sonrasında x=26. bir turdan sonra yani tekrar a fonksiyonu çağırıldığında (10. ve 11. satır) tekrar 20 ve 25 yazıyor. Çünkü o blok içine dışarıdan ulaşılamadığı için son değeri(26) hafızadan silinerek tekrar 25 yazılıyor. Bunu önlemek için değişkeni “statik” türünde tanımlamamız gerekiyor. 6. ve 7. satırda statik tanımlanan x değerleri, 50 ve 51 olarak yazıldı, tekrar aynı fonksiyon çağırıldığında (12. ve 13. satır) x in son değerini yazdırabildik. Çünkü statik değişkenler global değişkenler gibi davranırlar. Bu yüzden hafızadan program bitene kadar silinmezler.



 

Bu günlük de bu kadar. Global değişkenler, yerel değişkenler ve static değişkenler önemli bir konudur, anlaşılması şiddetle gerekmektedir. Elimden geldiği kadar basit anlatmaya çalıştım, umarım soru işareti kalmamıştır. Eğer kaldıysa sorularınızı bana iletebilirsiniz… İyi çalışmalar…

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir