C de Global ve Local kavramlarının önemli bir yeri vardır ... Genellikle döngülerde saçma değerlerin çıkması ve Bloklarda yanlış değerlin çıkması Bu tanımlamaların Doğru yapılamamasından kaynaklanmaktadır.
Global Kavramı değişkene tanımlandığı yerden sonra hemen her blokta kullanılacağını ifade eder ... Eğer Blok kavramına yabancı iseniz ;
Blok { } işaretleri arasında kalan kısımdır.Bu bir if bloğu olabilir , Döngü Bloğu olabilir, Main bloğu olabilir.Yani blok kavramı bir kapalı kutu oluşturur ... Ve sadece Blok arasında kalan değişkenler veya nesneler birbirini tanıyabilir.
Bu yüzden Dışarıdan Tanımlanan bir değişkenin kullanılabilmesi için Global Olarak Tanımlanması demektir.Yani Global Demek Blokların dışında olan ancak hiçbir bloğun içinde tanımlanmayan değişken(Biraz Karışık oldu galiba) yani blokların dışında tanımlanan değişken demektir Ve her bloktan kullanılabilir...
Local (yerel) değişken ise sadece blokların içinde kullanılan ve dışarıdan erişilemeyen değişken demektir...
Örnek ;
int x=10;
void goster()
{
printf("%d\n",x);
}
burada x değişkeni goster fonksiyonu içinden kullanılabiliyor.Çünkü Global ;
Örnek ;
int goster()
{
int y=50;
printf("%d",y);
}
int yeni()
{
printf("%d",y);
}
burada y değişkeni başka bir blokta tanımlanmış olduğu için sadece o blok içerisinde kullanılabilir.Yani goster() fonksiyonu dışında hiçbir yerde kullanılamaz yeni() isimli fonksiyon bunu kullanmaya çalıştığı için derleyici hata verecektir. Çünkü y değişkeni local olarak goster() fonksiyonu içerisinde tanımlanmıştır... Bu yüzden y değişkeninin her iki fonksiyon tarafından kullanılamabilmesi için her iki bloğun dışında Global olarak tanımlanması gerekir...
Bu yüzden global ve local kavramları çok dikkat edilmesi gereken bir programalama kuralıdır...
Global ve Local tanımlamalarında diğer bir önemli husus ise Global olarak tanımlanmış değişkenlere ilk değer verme ile değişken varsayılan olarak Sıfır(0) değerini alır... Eğer Local bir değişken tanımlarsanız ve buna bir ilk değer vermezseniz Derleyici varsayılan olarak kafasına göre bir değer verir bu 0 olur 1000 olur 983294819324 olur kafasına göre takılır... Bu yüzden local olarak tanımladığınız değişkenlere mutlaka bir ilk değer verin