C Öğreticisi 6 (Depolama Sınıfları)

Bu yazılar www.tutorialspoint.com/cprogramming/ adresindeki yazı dizilerinin çevirileridir.

Bir depolama sınıfı, bir C Programındaki değişkenlerin veya fonksiyonların kapsamını (görünürlük) ve ömrünü tanımlar. Değiştirdikleri türden önce gelirler. Bir C programında dört farklı depolama sınıfı vardır -

  • auto

  • register

  • static

  • extern

Auto Depolama Sınıfı

Auto depolama sınıfı, tüm yerel değişkenler için varsayılan depolama sınıfıdır.

{

int mount;

auto int month;

}

Yukarıdaki örnek, aynı depolama sınıfındaki iki değişkeni tanımlar. ‘auto’ sadece fonksiyonlar içinde, yani yerel değişkenlerde kullanılabilir.

Register Depolama Sınıfı

Register sınıfı, RAM yerine bir kayıt defterinde saklanması gereken yerel değişkenleri tanımlamak için kullanılır.

Bu, değişkenin kayıt büyüklüğüne (genellikle bir sözcük) eşit bir maksimum boyuta sahip olduğu ve kendisine uygulanan unary ‘&’ operatörüne sahip olamayacağı (bir bellek konumuna sahip olmadığı) anlamına gelir.

{

register int miles;

}

Register sadece sayaç gibi hızlı erişim gerektiren değişkenler için kullanılmalıdır. Ayrıca ‘register’ tanımının, değişkenin bir register’da depolanacağı anlamına gelmediğine de dikkat edilmelidir, donanım ve uygulama kısıtlamalarına bağlı olarak bir kayıtta saklanabileceği anlamına gelir.

Static Depolama Sınıfı

Static depolama sınıfı, derleyiciye programın ömrü boyunca yerel bir değişkenin varlığını sürdürmesini sağlar, her girişte ve kapsam dışına çıktığında oluşturmak ve yok etmek yerine talimat verir. Bu nedenle, yerel değişkenleri static yapmak, işlev çağrıları arasındaki değerlerini korumalarını sağlar.

Static değiştirici genel değişkenlere de uygulanabilir. Bu yapıldığında, değişkenin kapsamının bildirildiği dosya ile sınırlı olmasına neden olur.

C programlamada, global bir değişkende statik kullanıldığında, bu üyenin yalnızca bir kopyasının sınıfının tüm nesneleri tarafından paylaşılmasına neden olur.

http://tpcg.io/kZFxpW

#include <stdio.h>

/* function declaration */

void func(void);

static int count = 5; /* global variable */

main() {

while(count — ) {

func();

}

return 0;

}

/* function definition */

void func( void ) {

static int i = 5; /* local static variable */

i++;

printf(“i is %d and count is %d\n”, i, count);

}

Yukarıdaki kod derlendiğinde ve çalıştırıldığında, aşağıdaki sonucu verir -

i is 6 and count is 4

i is 7 and count is 3

i is 8 and count is 2

i is 9 and count is 1

i is 10 and count is 0

Extern Depolama Sınıfı

Extern depolama sınıfı, TÜM program dosyalarının görebileceği bir global değişkenin referansını vermek için kullanılır.’Extern’ kullanıldığında, değişken başlatılamaz, ancak değişken adını daha önce tanımlanmış bir depolama konumuna işaret eder.

Birden fazla dosyanız varsa ve başka dosyalarda da kullanılacak bir global değişken veya fonksiyon tanımladığınızda, extern tanımlanmış değişken veya fonksiyonun referansını sağlamak için başka bir dosyada kullanılır. Extern başka bir dosyadaki global bir değişkeni veya işlevi bildirmek için kullanılır.

Extern değiştirici, en genel olarak, aynı genel değişkenleri veya işlevleri aşağıda açıklanan şekilde paylaşan iki veya daha fazla dosya olduğunda kullanılır.

Birinci dosya: main.c

#include <stdio.h>

int count ;

extern void write_extern();

main() {

count = 5;

write_extern();

}

İkinci Dosya: support.c

#include <stdio.h>

extern int count;

void write_extern(void) {

printf(“count is %d\n”, count);

}

Burada, extern ikinci dosyadaki sayımı bildirmek için kullanılıyor, burada ilk dosyadaki tanımı main.c. Şimdi, bu iki dosyayı aşağıdaki gibi derleyin -

$gcc main.c support.c

a.out çalıştırılabilir programını üretecektir. Bu program yürütüldüğünde aşağıdaki sonucu verir -

count is 5

https://www.tutorialspoint.com/cprogramming/c_storage_classes.htm

Last updated