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; }