Değişkenlerin Görünürlük Alanları ve Ömürleri

İki temel kapsam türü vardır: yerel kapsam ve global kapsam.

Fonksiyonların dışında bildirilen değişkenler global kapsamda yer alır. Bu gibi değişkenlere programın her yerinden erişilebilir. Bunlar belleğin global havuzuna yerleştirilirler, bu yüzden ömürleri de programın ömrüyle aynıdır.

Bir blok (programın küme parantezleri içine yerleştirilen parçası) içinde bildirilen değişkenler yerel kapsama sahiptir. Bu tür değişkenler bildirildiği blok dışında görünmezdir (dolayısıyla mevcut değildir). Yerel bildirimin en bilindik örneği fonksiyon içinde bildirilen değişkenlerdir. Yerel olarak bildirilen bir değişken, yığın üzerinde yer alır ve bu değişkenin ömrü fonksiyonun ömrüne eşittir.

Yerel değişkenin kapsamı bildirildiği blokla sınırlı olduğundan, farklı bloklarda aynı isimde değişkenler bildirmek mümkündür;. Bu, global düzeye kadar daha üst seviyelerde bildirilmiş olan değişkenler için de geçerlidir.

Örnek:

void CalculateLWMA(int rates_total,int prev_calculated,int begin,const double &price[])
  {
   int        i,limit;
   static int weightsum=0;
   double     sum=0;
//---
   if(prev_calculated==0)
     {
      limit=MA_Period+begin;
      //--- ilk sınır çubukları için boş değer ayarla
      for(i=0; i<limit; i++) LineBuffer[i]=0.0;
      //--- görünen ilk değeri hesapla
      double firstValue=0;
      for(int i=begin; i<limit; i++)
        {
         int k=i-begin+1;
         weightsum+=k;
         firstValue+=k*price[i];
        }
      firstValue/=(double)weightsum;
      LineBuffer[limit-1]=firstValue;
     }
   else
     {
      limit=prev_calculated-1;
     }
 
   for(i=limit;i<rates_total;i++)
     {
      sum=0;
      for(int j=0; j<MA_Period; j++) sum+=(MA_Period-j)*price[i-j];
      LineBuffer[i]=sum/weightsum;
     }
//---
  }

Aşağıdaki satırda bildirilen i değişkenine dikkat edin

      for(int i=begin; i<limit; i++)
        {
         int k=i-begin+1;
         weightsum+=k;
         firstValue+=k*price[i];
        }

Bu değişkenin kapsamı sadece döngüyle sınırlıdır. Döngü dışında aynı isimle fonksiyon içinde bildirilmiş bir değişken bulunmaktadır. Ayrıca döngü içinde bildirilen k değişkeninin de kapsamı yine döngü gövdesidir.

Yerel değişkenler static erişim belirteci ile bildirilebilir. Bu durumda derleyici global bellek havuzunda bir değişkene sahip olur. Bu yüzden bir statik değişkenin ömrü programın ömrüne eşittir. Burada bu değişkenin kapsamı bildirildiği blok ile sınırlıdır.

Ayrıca Bakınız

Veri Tipleri, Tiplerin Kapsüllenmesi ve Genişletilebilirliği, Değişkenlerin Başlatılması, Nesnelerin Oluşturulması ve Silinmesi