Local Variables

Kategori: C , 22 Haziran 2019 , JanFranco


Değişkenlere erişmemiz, onları nerede tanımladığımıza bağlıdır. Örneğin local bir değişkene dışarıdan erişmemiz mümkün değildir. Global bir değişkene her yerden erişebiliriz. Örneklerle anlatmak gerekirse:

int test(int a){
    int b;
    b = 10;
    a = 20;
    c = 30;	/*ERROR*/
}

int main(void){
    int c;
    c = 20;
    b = 30;	/*ERROR*/
    return 0;
}

Compiler /*ERROR*/ yazılan kısımlarda hata olduğunu söyleyecektir. Bunun sebebi şudur, main fonksiyonunda c değişkeni tanımladık ancak bu değişken main fonksiyonunda tanımlanmıştır ve local bir değişkendir, test fonksiyonundan erişilemez. Aynı şekilde fonksiyonda tanımladığımız b değişkenine de main fonksiyonundan erişemeyiz. Local değişkenleri daha iyi anlamak için bir örnek:

int main(void){
    int a = 5;

    if(a != 0){
        int b = 10;
        a = b;
    }

    b = 12;	/*ERROR*/

    {
        int c = 12;
        int a;
        a = c;
    }

    printf("%d\n", a);

    return 0;
}

Burada bahsetmediğimiz bir özellik mevcut. Herhangi bir statement tanımlamadan { } şeklinde blok açabiliriz. Başlangıçta a adında bir değişken tanımladık ve bu değişkenin değerini 5 olarak atadık. Daha sonra bir if bloğu tanımladık. a değişkeninin değeri 0 olmadığından bloktaki kodlar çalışacaktır. Blokta bir b değişkeni tanımladık ve değerini 10 yaptık. a = b diyerek a değişkeninin değerini de 10 olarak değiştirdik. Burada if bloğu mainin bir alt bloğudur. Bu sebeten dolayı if bloğundan a değişkenini okuyabiliriz. Daha sonra b = 12 diyerek b değişkeninin değerini değiştirmeye çalıştık. Burada bir hata alırız. Çünkü b değişkeni main fonksiyonunda tanımlanmamıştır. if bloğunda tanımlanmıştır, bir local değişkendir ve dışarıdan okunamaz. Bir blok açtık ve değeri 12 olan bir c değişkeni tanımladık. Daha sonra bir a değişkeni tanımladık ve c değişkeninin değerini a değişkenine atadık. Burada a değişkeni 2. kez tanımlanmıştır. Burada herhangi bir hata meydana gelmez çünkü bir bloğun içindeyiz. Son olarak a değişkenin değerini ekrana bastırdık. Burada sonuç 5 olarak karşımıza çıkar. Blokların içindeki işlemler sonucu etkilemez.


Sonraki Yazı: Global Variables
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın