C++ statik değişkenler

C++ statik değişkenler, oluşturulduğu andan itibaren global değişkenler gibi davranarak program çalışma süresince bellekte kalırlar. Fonksiyon kapsamı (scope) sonuna gelindiğinde bellekten atılmazlar.

Statik değişkenler, ilk tanımlandıkları değeri muhafaza ederler. Bir kez tanımlandıktan sonra üzerine yeni bir değer tanımlanamaz.

#include <iostream>
using namespace std;

void say()
{
    //statik değişken tanımlandı, 
    //count = 0 oldu. 
    
    //tekrar çağrıldığında
    //count = 0;
    //yeniden tanımlanmayacak
    static int count = 0;
    cout << count << " ";

    // count değeri 1 arttırıldı
    count++;
}

int main()
{
  	//5 kez say fonksiyonu 
    //çalıştırılacak
    for (int i=1; i<=5; i++)

        say(); //0 1 2 3 4 yazdı

        /**
         * static int count = 0; yerine
         * int count = 0 
         * olarak tanımlansaydı,
         *
         * her döngüde count = 0 
         * olarak yeniden tanımlanacaktı
         * ve ekrana 0 0 0 0 0 yazacaktı
         */

    return 0;
}

Farklı bir örnek ve ekran çıktısı

#include <iostream>
using namespace std;

void fonk1(void) {
  
    //normal, yerel değişken.
    //her seferinde a = 1
    //çalışır
    int a = 1;
    cout << a << " ";
    a = a + 5;
    cout << a << " ";
}
void fonk2(void) {
    
    //statik davranışına dikkat!
    //a = 0 bir kez çalışacak
    //ve bir daha çalışmayacak
    static int a = 0;
    
    cout << a << " ";
    a = a + 9;
    cout << a << " ";
}

int main() {
 
    fonk1();
    fonk2();
    cout << endl;
    fonk1();
    fonk2();
    return 0;
}
Ads Blocker Image Powered by Code Help Pro

Reklam Engelleyici Algılandı!

Reklamları engellemek için uzantı kullandığınızı tespit ettik.

Lütfen bu reklam engelleyiciyi devre dışı bırakarak ya da sitemize izin vererek bize destek olun.

Dikkat: VPN eklentiniz üzerinde de reklam engelleyici olabilir.