C++ Storage

by ck
0 yorum

Storage (Depolama)

Depolama sınıfları, değişkenlerin ömrünü ve kapsamını belirtmek için kullanılır. Değişkenler için depolamanın nasıl tahsis edileceği ve Değişkenin karşılaştırıcı tarafından nasıl işlendiği bu depolama sınıflarına bağlıdır.

Bunlar temel olarak 5 farklı türe ayrılır:

  1. Auto
  2. Register
  3. Extern
  4. Static
  5. Mutable

Auto

Otomatik depolama sınıfı, bir fonksiyon veya blok içinde bildirilen tüm yerel değişkenler için varsayılan depolama sınıfıdır. C++ programı yazılırken auto anahtar sözcüğü nadiren kullanılır.Otomatik depolama sınıfı, yerel değişkenler olarak da adlandırılan otomatik değişkenleri bildirmek için kullanılır.Bir işaretçi(pointer) değişkeni kullanarak kapsam dışındaki otomatik değişkenlere erişebilirsiniz. Değişkenlerin bulunduğu aynı bellek konumuna işaret etmeniz gerekir. 

Örnek:

#include <iostream> 
using namespace std; 
  
int main() 
{ 
  
    auto x = 16; 
    auto y = 745.84; 
    auto harf = 'C'; 
    auto adSoyad = "Caner KARADAĞ"; 

    cout << x << endl; 
    cout << y << endl; 
    cout << harf << endl; 
    cout << adSoyad << endl; 
     
    return 0; 
}

Çıktı:

16                                                                                                                         
745.84                                                                                                                     
C                                                                                                                          
Caner KARADAĞ 

Register

Kayıt deposu, birincil bellek yerine CPU kayıtlarına bir değişkenin depolamasını atar. Ömrü ve görünürlüğü otomatik değişkenle aynıdır. Kayıt değişkeni yaratmanın amacı, erişim hızını artırmak ve programın daha hızlı çalışmasını sağlamaktır. Kayıtta kullanılabilir alan yoksa, bu değişkenler ana bellekte saklanır ve otomatik depolama sınıfı değişkenlerine benzer şekilde çalışır. Bu yüzden sadece hızlı erişim gerektiren değişkenler kayıt altına alınmalıdır.

Örnek:

#include <iostream> 
using namespace std; 
  
int main() 
{ 
    register char x = 'C'; 
  
    cout << "'x' değişkenin değeri: " << x << endl; 
         
    return 0; 
}

Çıktı:

'x' değişkenin değeri: C

Extern

Harici depolama sınıfı, tüm program dosyaları tarafından görülebilen genel bir değişkene referans vermek için kullanılır. ‘Extern’ kullandığınızda değişken başlatılamaz çünkü tek yaptığı şey değişken adını daha önce tanımlanmış olan bir depolama konumuna yönlendirmektir.

Birden fazla dosyanız varsa ve diğer dosyalarda da kullanılacak bir global değişken veya fonksiyon tanımladığınızda, extern, tanımlanmış değişken veya fonksiyonu referans vermek için başka bir dosyada kullanılır. Sadece extern anlamak için başka bir dosyada global bir değişken veya fonksiyonu bildirmek için kullanılır.

Örnek:

#include <iostream> 
using namespace std; 
  
int x; 

int main() 
{ 
  
    extern int x; 
  
    cout << "'x' değişkenin değeri:  " << x << endl; 
  
    x = 584; 
  
    cout <<"Yeni 'x' değişkenin değeri: " << x; 
    
    return 0; 
}

Çıktı:

'x' değişkenin değeri:  0                                                                                                  
Yeni 'x' değişkenin değeri: 584  

Static

Bir kez başlatıldığında statik olarak bildirilen bir değişken, programın sonuna kadar devam eder. Bir fonksiyon içinde statik bir değişken bildirilirse, programın sonuna kadar varlığını sürdürür ve fonksiyon var olduğu için yok edilmez (otomatik olarak olduğu gibi). Statik değişken, bir programdaki tüm işlevlerin dışında bildirilirse, yalnızca bildirildiği programda kullanılabilir.

Örnek:

#include <iostream> 
using namespace std; 
  
int x; 

void ornekFonksiyon()
{
    static int c;    

    c = c + 5;
    x = 74;
    cout << "'x' değişkenin değeri: " << x << endl;
    cout << "'c' değişkenin değeri: " << c << endl;
}

int main()
{
    int y;   
    x=12;
    y=38;
    ornekFonksiyon();

    cout << "'y' değişkenin değeri: " << y << endl;
    cout << "'x' değişkenin değeri: " << x << endl;
    
    ornekFonksiyon();
    return 0;
}

Çıktı:

'x' değişkenin değeri: 74                                                                                                  
'c' değişkenin değeri: 5                                                                                                   
'y' değişkenin değeri: 38                                                                                                  
'x' değişkenin değeri: 74                                                                                                  
'x' değişkenin değeri: 74                                                                                                  
'c' değişkenin değeri: 10

Mutable

C++ ‘da, bir sınıf nesnesi const anahtar sözcüğü kullanılarak sabit tutulabilir. Bu, program yürütülürken sınıf nesnesinin veri üyelerinin değiştirilmesine izin vermez. Ancak, bu sabit nesnenin bazı veri üyelerinin değiştirilmesi gerektiği durumlar vardır. Örneğin, bir banka havalesi sırasında, hiçbir bilgi değiştirilemeyecek şekilde bir para işleminin kilitlenmesi gerekir, ancak o zaman bile, durumu – işlemden başlayıp işlemeye tamamlandı. Bu durumlarda, bu değişkenleri değiştirilebilir bir depolama sınıfı kullanarak değiştirilebilir hale getirebiliriz.

Örnek:

#include <iostream> 
using namespace std; 
  
class Ornek { 
public: 
    int a; 
  
    mutable int b; 
  
    Ornek() 
    { 
        a = 67; 
        b = 143; 
    } 
}; 
  
int main() 
{ 
    const Ornek orn1; 
  
    orn1.b = 41; 
    cout << "'b' değişkenin değeri: " << orn1.b; 
    return 0; 
}

Çıktı:

'b' değişkenin değeri: 41                                                                                                  

Şunlar da hoşunuza gidebilir

Yorum Yap

Web sitemizde size en iyi deneyimi sunabilmemiz için çerezleri kullanıyoruz. Bu siteyi kullanmaya devam ederseniz, bunu kabul ettiğinizi varsayarız. Kabul Et Gizlilik Politikası