C'deki Depolama Sınıfları: Farklı Depolama Sınıfları Türleri [Örneklerle]

Yayınlanan: 2020-10-21

C ile kodlama, her programda değişkenlerin kullanılmasına büyük ölçüde odaklanır. Bunlar C programlamanın temel yönleridir. C'deki her değişkenin iki özelliği vardır; tip ve depolama sınıfları. Bunların arasında tür, değişkenin veri türünü ifade eder ve C'deki depolama sınıfları , değişkenin kapsamını, ömrünü ve görünürlüğünü belirler. C'deki depolama sınıfları, bir değişkenin ömrünü, görünürlüğünü, bellek konumunu ve başlangıç ​​değerini bulmak için kullanılır.

Bu blog yazısında, C'deki depolama sınıflarına , türlerine ve özelliklerinin programın çıktısını nasıl etkilediğine bazı programlama örnekleri ile ayrıntılı bir göz atacağız . Bir değişkenin bilgisini temsil etmek için C'deki bir depolama sınıfı kullanılır.

Swiggy, Quora, IMDB ve daha fazlası gibi uygulamalar oluşturmayı öğrenin

İçindekiler

C'deki Depolama Sınıfları Nelerdir?

C'deki depolama sınıfları , bellekte tutulacak bir değişkenin depolama alanını tahsis eder. Bir sistemin RAM'inde saklanırlar. Depolama alanı dışında, bir değişkenin kapsamını belirlerler. C programındaki değişkenler, esas olarak cihazın belleği ve CPU kayıtları olan rastgele bellekte fiziksel bir yerde saklanır.

C'deki depolama sınıfları da değişkenin ömrünü tanımlar ve onu 'yerel' veya 'genel' olarak adlandırır. Depolama sınıfları, kapsamı veya görünürlüğü ve değişkenin başlangıç ​​değerini tanımlamak için de yararlıdır. C'de öncelikle dört depolama sınıfı vardır , yani. otomatik , kayıt , statik ve harici . Her birini ayrı ayrı tartışacağız.

C'deki Depolama Sınıfları Nasıl Bildirilir?

C'deki dört depolama sınıfı , depolama sınıfı belirteçleri olan auto, register, extern, static ile bir blok veya programda bildirilir. Sözdizimsel biçimde kullanılan bir depolama sınıfı belirleyicisi daha vardır, 'typedef' ve depolama ayırmaz. Belirticiler, derleyiciye değişkenleri depolaması konusunda talimat verir. C'deki harici depolama sınıfı, derleyiciye, tanımlanan değişkenin harici bağlantı ile bildirildiğini söyler.

Bir değişkeni tanımlamak ve bildirmek arasında önemli bir fark vardır. Bir değişken tanımlamak, değişken için bellek ayırmak ve bunu bildirmek, onu bir değerle başlatmak anlamına gelir.

Sözdizimi:

depolama_sınıfı_belirleyici veri_türü değişken_adı;

Okuyun: Yeni Başlayanlar İçin C#'ta İlginç Proje Fikirleri ve Konuları

Özel Durum: Bir programda hiçbir depolama sınıfı belirteci bildirilmediğinde veya tanımlanmadığında

Değişken bildiriminde verilen en az bir depolama sınıfı belirteci vardır. Ancak, belirtilen bir depolama sınıfı belirteci olmaması durumunda, aşağıdaki kurallar izlenir:

1. Bir fonksiyon içinde tanımlanan değişkenler auto olarak kabul edilir.

2. Bir fonksiyon içinde bildirilen fonksiyonlar, harici olarak kabul edilir.

3. Bir fonksiyonun dışında bildirilen değişkenler ve fonksiyonlar, harici bağlantı ile statik olarak kabul edilir .

C'deki Depolama Sınıflarının Türleri Nelerdir?

C'de dört depolama sınıfı vardır , bunlara bir göz atalım:

1. C'de Otomatik Depolama Sınıfları

Bir fonksiyonda veya blokta tanımlanan her değişken, belirtilen bir depolama sınıfı yoksa varsayılan olarak otomatik depolama sınıfına aittir. Bir fonksiyonun veya bloğun otomatik depolama sınıfına ait değişkenleri, otomatik belirteci ile bildirilir. C'de auto altındaki değişkenler , tanımlandıkları bloğa yereldir ve bloğun dışına atılır.

Otomatik Depolama Sınıflarını Gösteren Basit Bir Program:

#include <stdio.h>

int ana( )

{

otomatik int ben = 11;

{

otomatik int ben = 22;

{

otomatik int ben = 33;

printf ( “%d”, ben);

}

printf ( “%d”, ben);

}

printf ( “%d”, ben);

}

Programın çıktısı:

3 2 1

Açıklama:

Yukarıdaki programda, bildirilen i değişkeninin üç katı vardır. Aynı isimli değişkenler farklı bloklarda tanımlanabilir. Böylece, bu program herhangi bir hata olmadan başarıyla derlenecek ve yürütülecektir. En içteki bloktaki 'printf' işlevi 3 yazdıracak ve bu bloktaki i değişkeni blok bittikten sonra yok edilecektir.

Bir sonraki, ikinci dış blok 2 yazdırır ve ardından bunu 1 yazdıran dış blok izler. Otomatik değişkenler düzgün bir şekilde başlatılır; Aksi takdirde, derleyici onlara bir başlangıç ​​değeri vermediği için tanımsız değerler alırsınız.

2. Depolama Sınıflarını C'de Kaydedin

Bir kayıt depolama sınıfına ait değişkenler , C'deki auto ile eşdeğerdir ancak bellekte değil CPU kayıtlarında saklanır, dolayısıyla adı. Sık erişilen kişilerdir. Kayıt belirteci, kayıt depolama sınıfının değişkenini bildirmek için kullanılır. Bir kayıt depolama sınıfının değişkenleri, tanımlandıkları ve blok sona erdiğinde yok edildikleri bloğa yereldir.

Kayıt Depolama Sınıflarını Gösteren Basit Bir Program:

#include <stdio.h>

int ana()

{

kayıt int i = 10;

int *p = &i; //hata: istenen kayıt değişkeninin adresi

printf (“i değeri: %d”, *p);

printf (“i'nin adresi: %u”, p);

}

Açıklama:

Yukarıdaki programda, kod, i değişkeninin adresini p işaretçi değişkenine almaya çalışır, ancak i bir kayıt değişkeni olarak bildirildiğinden, kod derlenmez ve "Hata: istenen kayıt değişkeninin adresi" hatasını görüntüler. .

Kayıtlara yalnızca belirli değişken türleri yerleştirilir. Kayıt değişkenlerine derleyici tarafından bir başlangıç ​​değeri verilmez.

Öğrenin: C++ ve Java: C++ ve Java Arasındaki Fark

3. C'deki Statik Depolama Sınıfları

Statik değişkenlerin görünürlüğü, işlevlerinin veya dosyalarının dışında sıfırdır, ancak değerleri çağrılar arasında korunur. Statik depolama sınıfına sahip değişkenler, statik belirteç ile bildirilir. Statik değişkenler bir fonksiyon veya dosya içindedir. Statik belirteç, yerel ve global değişkenlerle farklı şekilde çalışır.

Yerel ve Global Değişkenlerle Statik Depolama Sınıflarını Gösteren Basit Programlar:

i. Yerel değişken

#include <stdio.h>

geçersiz staticDemo()

{

statik int i;

{

statik int ben = 1;

printf (“%d”, ben);

ben++;

}

printf (“%d”, ben);

ben++;

}

int ana()

{

statikDemo();

statikDemo();

}

Programın çıktısı:

1 0

2 1

Açıklama:

Yerel bir değişken, bir işlev veya blok içinde statik bir belirteç tarafından tanımlandığında, derleyicide kalıcı depolama alanı oluşturulur. Statik yerel değişken, belirtildiği yerde fonksiyon veya blok tarafından görülebilir ve fonksiyon çağrıları arasında değerini korur. Yukarıdaki programda, i statik değişkeni, staticDemo() işlevi içinde iki blokta iki yerde tanımlanmıştır. staticDemo(), ana işlevde iki olarak adlandırılır. Bir sonraki çağrıda, statik değişkenler eski değerlerini korur ve yeniden başlatılması gerekmez.

ii. Küresel değişken

#include <stdio.h>

statik int gInt = 1;

statik boşluk staticDemo()

{

statik int i;

printf (“%d”, ben);

ben++;

printf (“%d”, globalInt);

globalInt++;

}

int ana()

{

statikDemo();

statikDemo();

}

Programın çıktısı:

0 1

1 2

Açıklama:

Statik değişkenlerin bir programda yalnızca bir kez başlatılması gerekir ve kullanım ömrü boyunca korunurlar. Varsayılan bir başlangıç ​​değeri olan sıfıra sahiptirler.

Genel bir değişken veya işlev statik bir belirteç tarafından tanımlandığında, bu değişken veya işlev yalnızca tanımlandığı dosya tarafından bilinir. Global bir değişken için, statik bir global değişkenin dahili bağlantısı olduğundan, diğer dosya rutinleri içeriğine erişemez ve içeriğini değiştiremez. Yukarıdaki programda, statik global değişken globalInt ve statik bir işlev olan staticDemo(), statik olarak tanımlanmıştır ve C dosyasının dışında kullanılamazlar.

4. C'de Harici Depolama Sınıfları

Harici depolama sınıfı değişkenleri veya işlevleri, 'extern' belirteci tarafından bildirilir. Bir değişken extern belirteci ile bildirildiğinde, değişkene herhangi bir depolama tahsis edilmez ve programın başka bir yerinde tanımlanmış olduğu varsayılır. Bir extern belirteci ile değişken başlatılmaz. Bir programda bir değişkeni harici bağlantı ile bildirmek için extern'in kullanılmasının nedeni .

Harici Depolama Sınıflarını Gösteren Basit Bir Program:

#include <stdio.h>

dış int i;

int ana()

{

printf (“i: %d”, ben);

}

int ben = 1;

Açıklama:

Yukarıdaki C programında, extern int i kaldırılırsa, i değişkeni printf'de kullanıldıktan sonra tanımlandığı için “Bildirilmemiş tanımlayıcı 'i' hatası olacaktır. Extern belirteci, derleyiciye i değişkeninin tanımlandığını ve burada bildirildiğini bildirir.

extern int i'yi değiştirirseniz; harici için int i = 5; extern belirteci bir değişken başlatmadığı için “'i'nin yeniden tanımlanması” hatası alırsınız .

Ayrıca Okuyun: Yeni Başlayanlar İçin C'de En İyi 7 Heyecan Verici Proje fikri

Son sözler

Bu makale , C'deki depolama sınıfları kavramını detaylandırıyor ve türlerinin birbirinden nasıl farklı olduğunu anlatıyor. Belirli bir depolama sınıfının ne zaman kullanılacağı, uğraştığınız değişkenin atamasına ve kapsamına, ömrüne ve görünürlüğüne bağlıdır.

Daha fazla bilgi edinmek istiyorsanız ve sektör uzmanlarından mentorluğa ihtiyacınız varsa, tam Yığın Yazılım Geliştirme alanında upGrad & IIIT Banglore'un PG Diplomasına göz atın.

Geleceğin Kariyerine Hazırlanın

YÜKSELTME VE IIIT-BANGALORE'NİN PG DİPLOMASI FULL STACK YAZILIM GELİŞTİRMEDE
Bugün Kaydolun