static

Tanımı

Statik anahtar kelime, yalnızca bir işlev tarafından görülebilen değişkenler oluşturmak için kullanılır. Bununla birlikte, bir işlev her çağrıldığında oluşturulan ve yok edilen yerel değişkenlerin aksine, statik değişkenler, işlev çağrıları arasında verilerini koruyarak işlev çağrısının ötesinde kalır.

Statik olarak bildirilen değişkenler, yalnızca bir işlev ilk kez çağrıldığında oluşturulur ve başlatılır.


Örnek Kod:

                
                    /*  RandomWalk
                    Paul Badger 2007
                    RandomWalk, iki uç nokta arasında rastgele yukarı ve aşağı dolaşır.
                    Bir döngüdeki maksimum hareket, "stepsize" parametresi tarafından yönetilir.
                    Statik bir değişken rastgele bir miktarda yukarı ve aşağı hareket ettirilir.
                    Bu teknik aynı zamanda "pembe gürültü" ve "sarhoş yürüyüş" olarak da bilinir.
                    */
                    #define randomWalkLowRange -20
                    #define randomWalkHighRange 20
                    int stepsize;
                    int thisTime;

                    void setup() {
                        Serial.begin(9600);
                    }

                    void loop () {
                        //    randomWalk işlevini test ediyoruz
                        stepsize = 5;
                        thisTime = randomWalk(stepsize);
                        Serial.printIn(thisTime);
                        delay(10);
                        int randomWalk(int moveSize) {
                            static int place; // "randomWalk" da değer depolamak için değişken - depolaması için "static" kullanıldı.
                            place = place + (random(-moveSize, moveSize + 1));
                            if (place < randomWalkLowRange) {                                 // alt ve üst limitleri kontrol et

                        place = randomWalkLowRange + (randomWalkLowRange - place);        // sayıyı pozitif yönde geri yansıt
                            }
                            else if (place > randomWalkHighRange) {      
                                place = randomWalkHighRange - (place - randomWalkHighRange); // sayıyı negatif yönde geri yansıt
                            } 
                            return place;
                        }