static — Maple v0.0.11 Documentation

### Navigation

- next
- previous |
- LeafLabs |
- Index »
- Complete Language Index »

# `static`

The `static` keyword can be used to create variables that are visible to only one function. However, unlike local variables that get created and destroyed every time a function is called, `static` variables persist beyond the function call, preserving their data between function calls.

Variables declared as `static` will only be created and initialized the first time a function is called.

Note

This is only one use of the `static` keyword in C++. It has some other important uses that are not documented here; consult a reliable C++ reference for details.

## Example

One use case for `static` variables is implementing counters that last longer than the functions which need them, but shouldn’t be shared to other functions. Here’s an example:

    void setup() {
        SerialUSB.begin();
    }

    void loop() {
        int reading;
        if (timeToReadSensors()) {
            reading = readSensors();
        }
        // do something with reading
    }

    int readSensors() {
        static int numSensorReadings = 0;
        numSensorReadings++;
        if (numSensorReadings % 100 == 0) {
            SerialUSB.print("just got to another 100 sensor readings");
        }
        return analogRead(...);
    }

In this example, the static variable `numSensorReadings` is initialized to zero the first time `readSensors()` is called, and then incremented, so it starts out at one. Subsequent calls to `readSensors()` won’t reset `numSensorReadings` to zero, because it was declared `static`. Thus, `numSensorReadings` is a count of the number of times that `readSensors()` has been called.

License and Attribution

Portions of this page were adapted from the Arduino Reference Documentation, which is released under a Creative Commons Attribution-ShareAlike 3.0 License.

### Navigation

- next
- previous |
- LeafLabs |
- Index »
- Complete Language Index »