C'deki Depolama Sınıfları: Otomatik, Harici, Statik, Kayıt (Örnekler)

C'de Depolama Sınıfı Nedir?

Bir depolama sınıfı, bir değişkenin görünürlüğünü ve konumunu temsil eder. Bir değişkene kodun hangi kısmından erişebileceğimizi söyler. C'de bir depolama sınıfı, aşağıdaki şeyleri tanımlamak için kullanılır:

  • Değişken kapsamı.
  • Değişkenin depolanacağı konum.
  • Bir değişkenin başlatılmış değeri.
  • Bir değişkenin ömrü.
  • Bir değişkene kimler erişebilir?

Bu nedenle bir değişken hakkındaki bilgileri temsil etmek için bir depolama sınıfı kullanılır.

NOT: Bir değişken yalnızca bir şeyle ilişkili değildir. veri tipi, değeri ama aynı zamanda bir depolama sınıfı.

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

Toplam dört tür standart depolama sınıfı vardır. Aşağıdaki tablo C'deki depolama sınıflarını göstermektedir.

Depolama sınıfı Amaç
Oto Varsayılan bir depolama sınıfıdır.
stajyer doktor Global bir değişkendir.
statik Kontrol fonksiyon çağrısına aktarıldığında bile değer döndürebilen yerel bir değişkendir.
kayıt olmak Bir Register'ın içinde saklanan bir değişkendir.

C'de Otomatik Depolama Sınıfı

Otomatik depolama sınıfı kullanılarak tanımlanan değişkenlere yerel değişkenler adı verilir. Otomatik, otomatik depolama sınıfı anlamına gelir. Bir değişken, açıkça belirtilmediği takdirde varsayılan olarak otomatik depolama sınıfındadır.

Bir otomatik değişkenin kapsamı yalnızca belirli blokla sınırlıdır. Kontrol bloğun dışına çıktığında erişim yok edilir. Bu, yalnızca otomatik değişkenin bildirildiği bloğun ona erişebileceği anlamına gelir.

Bir otomatik depolama sınıfını tanımlamak için auto anahtar sözcüğü kullanılır. Varsayılan olarak, bir otomatik değişken bir çöp değeri içerir.

Example, auto int age;

Aşağıdaki program iki yerel değişkene sahip bir fonksiyonu tanımlar.

int add(void) {
   int a=13;
   auto int b=48;
return a+b;}

Birbirinden bağımsız olan her blok kodundaki otomatik değişkenler için kapsam seviyesi “görünürlük seviyesini” gösteren başka bir program alıyoruz:

#include <stdio.h>
int main( )
{
  auto int j = 1;
  {
    auto int j= 2;
    {
      auto int j = 3;
      printf ( " %d ", j);
    }
    printf ( "\t %d ",j);
  }
  printf( "%d\n", j);}

ÇIKIŞ:

 3 2 1

C'de Harici Depolama Sınıfı

Extern, harici depolama sınıfı anlamına gelir. Extern depolama sınıfı, iki veya daha fazla dosya arasında paylaşılan global işlevlere veya değişkenlere sahip olduğumuzda kullanılır.

Anahtar kelime stajyer doktor Orijinal dosyada önceden tanımlanmış olan değişken veya fonksiyonun referansını sağlamak için başka bir dosyada global bir değişken veya fonksiyon bildirmek için kullanılır.

Bir extern anahtar sözcüğü kullanılarak tanımlanan değişkenlere global değişkenler adı verilir. Bu değişkenlere program boyunca erişilebilir. Harici değişkenin başlatılamayacağına, orijinal dosyada zaten tanımlandığına dikkat edin.

Example, extern void display();

İlk Dosya: main.c

#include <stdio.h>
extern i;
main() {
   printf("value of the external integer is = %d\n", i);
   return 0;}

İkinci Dosya: orijinal.c

#include <stdio.h>
i=48;

Sonuç:

 value of the external integer is = 48


Yukarıdaki kodu derlemek ve çalıştırmak için aşağıdaki adımları izleyin.

) 1 Adım Yeni proje oluştur,

  1. Konsol Uygulamasını Seçin
  2. Git'i tıklayın

C'de Harici Depolama Sınıfı

) 2 Adım C'yi seçin ve İleri'ye tıklayın

C'de Harici Depolama Sınıfı

) 3 Adım İleri'yi tıklayın

C'de Harici Depolama Sınıfı

) 4 Adım Ayrıntıları girin ve İleri'ye tıklayın

C'de Harici Depolama Sınıfı

) 5 Adım Son'u tıklayın

C'de Harici Depolama Sınıfı

) 6 Adım Ana kodu önceki programda gösterildiği gibi main.c dosyasına koyun ve kaydedin.

C'de Harici Depolama Sınıfı

) 7 Adım Yeni bir C dosyası oluşturun [Dosya -> yeni -> Boş Dosya], kaydedin (orijinal.c olarak) ve iletişim kutusunda “Tamam”a tıklayarak mevcut projeye ekleyin.

C'de Harici Depolama Sınıfı

) 8 Adım Önceki örnekte gösterilen orijinal.c dosyasının C kodunu main() işlevi olmadan koyun ve kaydedin.

C'de Harici Depolama Sınıfı

) 9 Adım Projenizi oluşturun ve çalıştırın. Sonuç bir sonraki şekilde gösterilmektedir

C'de Harici Depolama Sınıfı

C'de Statik Depolama Sınıfı

Statik değişkenler, işlev/dosya içinde yerel statik değişkenler olarak kullanılır. Ayrıca bir araç olarak da kullanılabilirler. küresel değişken

  • Statik yerel değişken, değerini işlev çağrıları veya blok arasında tutan ve saklayan ve yalnızca tanımlandığı işlev veya blok tarafından görülebilen yerel bir değişkendir.
  • Statik global değişkenler global değişkenlerdir ve görünürdür yalnızca bildirildiği dosyaya.
Example: static int count = 10;

Statik değişkenin varsayılan başlangıç ​​değerinin sıfır olduğunu ve ömrü boyunca yalnızca bir kez başlatıldığını unutmayın.

#include <stdio.h> /* function declaration */
void next(void);
static int counter = 7; /* global variable */
main() {
 while(counter<10) {
      next();
      counter++;   }
return 0;}
void next( void ) {    /* function definition */
   static int iteration = 13; /* local static variable */
   iteration ++;
   printf("iteration=%d and counter= %d\n", iteration, counter);}

Sonuç:

iteration=14 and counter= 7
iteration=15 and counter= 8
iteration=16 and counter= 9

Global değişkenlere dosyanın her yerinden erişilebilirken, statik değişkenlere yalnızca kodun belirli bir kısmı için erişilebilir.

Statik bir değişkenin ömrü program kodunun tamamındadır. Statik anahtar kelime kullanılarak bildirilen veya başlatılan bir değişken, her zaman varsayılan değer olarak sıfır içerir.

Depolama Sınıfını C'ye Kaydetme

Yerel değişkenleri, CPU yazmaçlarındaki işlevler veya bloklar içinde saklamak istediğinizde, yazmaç depolama sınıfını kullanabilirsiniz. RAM Bu değişkenlere hızlı erişim sağlamak için. Örneğin, "sayaçlar" kayıt defterinde saklanmak için iyi bir adaydır.

Example: register int age;

Anahtar kelime kayıt olmak Kayıt depolama sınıfını bildirmek için kullanılır. Kayıt depolama sınıfı kullanılarak bildirilen değişkenlerin program boyunca kullanım ömrü vardır.

Otomatik depolama sınıfına benzer. Değişken belirli blokla sınırlıdır. Tek fark, yazmaç depolama sınıfı kullanılarak bildirilen değişkenlerin bellek yerine CPU yazmaçlarının içinde saklanmasıdır. Kayıt ana hafızaya göre daha hızlı erişime sahiptir.

Kayıt depolama sınıfı kullanılarak bildirilen değişkenlerin varsayılan değeri yoktur. Bu değişkenler genellikle programın başında bildirilir.

#include <stdio.h> /* function declaration */
main() {
{register int  weight;
int *ptr=&weight ;/*it produces an error when the compilation occurs ,we cannot get a memory location when dealing with CPU register*/}
}

ÇIKIŞ:

error: address of register variable 'weight' requested

Sonraki tablo, C programlamada yaygın olarak kullanılan her bir depolama sınıfının temel özelliklerini özetlemektedir.

Depolama sınıfı Beyan Depolama Varsayılan Başlangıç ​​Değeri kapsam Ömür
Oto Bir fonksiyonun/bloğun içinde Bellek Öngörülemeyen Fonksiyon/blok içinde Fonksiyon/blok içinde
kayıt olmak Bir fonksiyonun/bloğun içinde CPU Kayıtları Çöp Fonksiyon/blok içinde Fonksiyon/blok içinde
stajyer doktor Tüm fonksiyonların dışında Bellek Sıfır Değişkenin extern olarak bildirildiği dosyanın tamamı ve diğer dosyalar programın çalışma zamanı
Statik (yerel) Bir fonksiyonun/bloğun içinde Bellek Sıfır Fonksiyon/blok içinde programın çalışma zamanı
Statik (küresel) Tüm fonksiyonların dışında Bellek Sıfır Küresel programın çalışma zamanı

ÖZET

Bu derste özetlemek gerekirse C'deki depolama sınıflarını tartıştık:

  • C'deki bir depolama sınıfı, bir değişken hakkında ek bilgileri temsil etmek için kullanılır.
  • Depolama sınıfı bir değişkenin kapsamını ve ömrünü temsil eder.
  • Ayrıca bir değişkene kimin ve nereden erişebileceğini de söyler.
  • Otomatik, harici, kayıt, statik bir C programındaki dört farklı depolama sınıfıdır.
  • Bir depolama sınıfı belirticisi C dili Değişkenleri, fonksiyonları ve parametreleri tanımlamak için kullanılır.
  • auto, bir blok veya fonksiyon içinde tanımlanan yerel değişken için kullanılır
  • kayıt hızlı erişim için değişkeni CPU kayıtlarında saklamak yerine bellek konumunda saklamak için kullanılır.
  • Statik hem global hem de yerel değişkenler için kullanılır. Her birinin bir C programı içinde kendi kullanım durumu vardır.
  • Extern, C proje dosyaları arasında veri paylaşımı için kullanılır.