static
static:静的宣言(静的変数宣言)
staticキーワードを使用して、1つの関数内だけに可視化される静的変数を作成することができます。 ただし、関数が呼び出されるたびに作成および破棄されるローカル変数とは異なり、静的変数は関数呼び出しを超えてデータを保持し、関数呼び出し間で保持されます。
staticとして宣言された変数は、関数が初めて呼び出されたときにのみ作成され、初期化されます。
(注意)ここではC ++のstaticキーワードを、静的変数を使用する場合についてのみ説明しています。 ここで記載されていない他の重要な用途がいくつかあります。 詳細については、信頼できるC ++リファレンスを参照してください。
利用例
静的変数の利用する場合の1つは、カウンタを必要とする関数よりも長く続くカウンタを実装することですが、他の関数とは共有しないでください。 ここに例があります:
code:sample.ino
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(...);
}
この例では、静的変数numSensorReadingsはreadSensors()が最初に呼び出されたときに0に初期化され、インクリメントされるため、1から始まります。 その後readSensors()を呼び出すと、numSensorReadingsはstatic宣言されているため、numSensorReadingsは0にリセットされません。 したがって、numSensorReadingsは、readSensors()が呼び出された回数のカウントです。
このドキュメントはleafLabs, LLC.が執筆し、たま吉が翻訳・一部加筆修正したものです。