Tip Niteleyiciler

C89'da iki çeşit tip niteleyici vardır. Bunlar const ve volatile'dır. Tip niteleyiciler değişkenin nasıl değiştirilebileceğini tanımlarlar.


const

const niteleyicisi ile bir değişken tanımlandığında bu değişken program içerisindeki kodlarla değiştirilemez. Bu şekilde değişken ilan etme şu şekilde yapılır: const tip isim.

Örnek olarak aşağıdaki kod verilsin;

#include <stdio.h>

int main(void){
    const int a;
    a=a+1;
    printf("a=%d\n",a);
    return 0;
}

Bu program çalışmayacaktır. Çünkü a değişkeni const olarak nitelenmiş fakat sonradan değiştirilmeye çalışılmıştır. Burada belki de dipnot düşülmesi gereken bir mevzu da "a=a+1" ifadesidir. Bu ifade matematikte yanlıştır fakat programlama mantığında doğrudur. Bu ifade şu anlama gelmektedir: "a değişkenine a'nın mevcut değerinin 1 fazlasını ata".

Bunun yerine şöyle yapılsaydı;

#include <stdio.h>

int main(void){
    const int a=1;
    printf("a=%d\n",a+1);    
    return 0;
}

Bu sefer kod çalışacak ve ekranımızda "a=2" ifadesini görecektik. Çünkü burada a değişkeninin ilk değeri değiştirilmeye çalışılmamış, programa a değişkeninin değerinin 1 fazlasını yazdırması söylenmiştir.

const niteleyicisi ile ilgili son bir örnek gösterelim:

#include <stdio.h>

int main(void){
    const int a;
    a=1;
    printf("a=%d\n",a);
    return 0;
}

Bu kod da çalışmayacaktır. Kodda önce a değişkeni tanımlanmış, bir alt satırda da değişkene ilk değer atanmış gibi görünmektedir. Fakat işin arka planı öyle değildir. Eğer bir değişken tanımlanır ve tanımlandığı satırda ilk değer atanmazsa değişken o an yine de -belli başlı kurallara dayalı- bir değer alır. Bir alttaki satır da bu değeri değiştirmeye çalışmaktadır. Bu nedenle bu program da hatalıdır.

const niteleyicisi hakkında bilinmesi gereken bir başka şey de bu niteleyicinin sadece değişkenin değerinin iç etkilerle değişemeyeceğini söylediğidir. Değişkenin değeri dış etkilerle, misalen programa etki eden bir donanımla değiştirilebilir.


volatile

C89'da tanımlanan ikinci niteleyici de volatile'dır. Bu niteliyici de değişken ilan edilirken aynen const niteleyicisi gibi kullanılır, yani: volatile tip isimvolatile niteleyicisi değişkenin değerinin dış etkilerle değişebileceğini belirtir. Bu şekilde değişken ilan edildiğinde derleyici dış etkileri de kontrol edecektir. volatile değişkeni kullanıldığında kod iç etkilerle de değişebilir.

Misalen;

volatile unsigned a=2; şeklinde bir değişken tanımlamış olalım. a değişkeninin değeri hem iç etkilerle değiştirilebilir hem de derleyici dış etkilerle değişip değişmediğini kontrol eder.

const ve volatile niteleyicileri birlikte de kullanılabilir. Örneğin "const volatile short int a" şeklinde bir a değişkeni tanımlanabilir. Bu durumda const niteleyicisi değişkenin ilk değerinin iç etkilerle değişmesini engelleyecektir, volatile niteleyicisi ise değişkenin değerinin dış etkilerle değişip değişmediğinin kontrol edilmesini sağlayacaktır.


restrict

C99 standartlarıyla birlikte restrict isimli bir tip niteleyici daha eklenmiştir. İşaretçilerle birlikte kullanılan bu tip niteleyiciye işaretçiler anlatılırken değinilecektir.




Değişkenler <<<<< Temel C >>>>> Yer Belirleyiciler