C programlama dilinde bir değişkenin veya fonksiyonun ne kadar süre ile depolanacağına karar vermemize yardımcı olan 4 sınıf mevcuttur. Yani değişken veya fonksiyonun ömrünü tanımlamamıza yardımcı olur. Bunlar;
- auto
- register
- static
- extern
auto Depolama Sınıfı
Tüm yerel değişkenler için varsayılan olarak tanımlanmaktadır. Aşağıdaki iki tanımlama da aynı depolama sınıfındandır.
{
int yas;
auto int yas;
}
register Depolama Sınıfı
Burada tanımlanmak istenen değişken geçici olan RAM'de değil de bir kayıt defterinde tanımlanması istenen değişkenler için kullanılmaktadır. Bu yüzden en fazla register boyutunda bir değişken olabilir ve & ile adresi bilinemez (Çünkü RAM'de bir adreste değil). Bu genellikle hızlı erişim gerektiren noktalarda kullanılmalıdır.
{
register int yas;
}
static Depolama Sınıfı
Programın ömrü boyunca yerel bir değişkenin var olmasını ve her giriş veya çıkışta yok edilmemesini söylemektedir. Bu depolama sınıfında oluşturulan değişken veya fonksiyonlar global veya içerisinde bulundukları fonksiyonlar için geçerlidir.
{
static int yas;
}
extern Depolama Sınıfı
extern başka bir dosyadaki global bir değişkeni veya işlevi bildirmek için kullanılır.
main.c
#include <stdio.h>
int yas;
extern void diger_fonksiyon();
main() {
yas = 24;
diger_fonksiyon();
}
yaslar.c
#include <stdio.h>
extern int yas;
void diger_fonksiyon(void) {
printf("Yaşı %d\n", yas);
}
Tabiki bu tip kullanımlarda çıktıyı yakalamak için referans edilen dosyayı da çalıştırırken çağırmalıyız.
$ gcc main.c yaslar.c
ve çıktı olarak "Yaşı 24" olarak verecektir.