Cの静的変数について学ぶ[コーディング例付き]
公開: 2020-10-21プログラミングの旅では、ほとんどの変数を回避した可能性があります。 変数を宣言すると、メモリに格納される値のサイズ、レイアウト、範囲、およびそれに適用される一連の操作が決まるため、これらはプログラマーにとって非常に重要な側面です。 これは、プログラムが操作できるストレージ領域に付けられた名前です。 この記事では、Cで最も重要な変数の1つ、つまり静的変数について説明します。
Cのstaticキーワードは非常に頻繁に使用されます。 ほとんどのプログラマーがしばしば混乱することの1つは、ローカル変数とグローバル変数が静的変数にどのように影響するかです。 いずれの場合も、staticキーワードは、データが格納される場所と、プログラム全体での動作の点で異なる動作をします。 静的キーワードの主な用途は次のとおりです。
私。 関数内のローカル変数または静的ローカル変数:可視性は自動ローカル変数と同じです。
ii。 モジュール内のグローバル変数または静的グローバル変数:プログラムの先頭で宣言されます。
iii。 モジュール内の関数または静的関数:プログラム全体に存在します。
iv。 メンバー変数または静的メンバー変数:クラスのすべてのインスタンスからアクセスされます。

v。メソッドまたは静的メソッド:クラスのすべてのインスタンスからアクセスされます。
3つのユースケースすべてと、それらが変数のストレージ領域によってどのように変化し、コードの品質が向上するかを調べます。
目次
静的変数とは何ですか?
プログラミングでは、静的変数は「静的に」割り当てられた変数です。つまり、その存続期間はプログラムの実行全体です。 'static'キーワードで宣言され、関数呼び出し全体でその値を保持します。
構文:
静的変数の構文は次のとおりです。
static data_type variable_name;
静的変数宣言
静的変数が宣言されると、そのコピーが作成されます。 これらがローカル変数の代わりに使用される主な目的は、それが存在するスコープで割り当てられた値を保持することです。 プログラマーは、プログラムの新しいスコープで変数を何度も初期化する必要はありません。 プログラム全体に存在します。
一般に、静的は、任意のデータ型に適用されるストレージクラス指定子です。 これは、プログラムスコープ内の変数または関数を制限するようにコンパイラーに指示し、プログラムの存続期間を通じて存続します。 このプロパティにより、静的な変数をプログラムの残りの部分からカプセル化または非表示にして、意図しないアクセスを防ぐことができます。 開発者は、モジュール内で変数にアクセスする方法を制御できます。 これは優れたプログラミング手法です。
読む:トップ130以上のJavaインタビューの質問と回答
プログラム内の静的変数
・静的変数は、コード全体の実行中にメモリ空間に残ります。
・静的変数のデフォルトの初期化値は、割り当てられていない場合でもゼロです。これは、ローカル変数には当てはまりません。
・Cのstaticキーワードを使用して静的変数を初期化する必要があります。そうしないと、エラーが返されます。
・静的変数は、関数が最初に呼び出されたときにのみ初期化されます。
・静的変数では、静的変数のメモリが割り当てられます。
・グローバル静的変数は、プログラムの外部からアクセスできません。
Cの静的変数に関する基本プログラム
#include <stdio.h>

int main()
{{
printf(“%d”、func());
printf(“ \ n%d”、func());
0を返します。
}
int func()
{{
静的 int count = 0;
count ++;
リターンカウント;
}
このコードでは、count変数は静的変数として宣言されています。 func()を呼び出すたびに、countの値は1に更新されます。次の関数呼び出しでは、count変数の値は2になります。したがって、静的変数の値は関数呼び出しで保持されます。
出力:
1
2
ローカル変数と静的変数の違い
プログラムでは、ローカル変数と静的変数の両方が同じ意味で使用されます。 2つの主な違いは次のとおりです。
特徴点 | ローカル変数 | 静的変数 |
可変キーワード宣言 | 1.自動変数によって宣言されます(例:int a = 1)。 | 1.静的変数、たとえばstatic int a=1によって宣言されます。 |
変数宣言 | 2.関数内で宣言されます。 | 2.関数の内部または外部で宣言されます。 |
変数の作成 | 3.関数が呼び出されるたびに作成されます。 | 3.これは、最初の関数呼び出し専用に作成され、同じ変数が以降の呼び出しに使用されます。 |
変数の初期化 | 4.関数が呼び出されるたびに初期化されます。 | 4.プログラムで一度だけ初期化されます。 |
変数のデフォルト値 | 5.初期化されていない場合、ガベージ値が変数に格納されます。 | 5.初期化されていない場合、値0はデフォルトで静的に保存されます。 |
可変終了 | 6.関数が終了すると、関数は終了します。 | 6.関数内で宣言されている場合、その関数でのみアクセスできます。 スコープはその関数に限定され、その存続期間はプログラムが終了するまでです。 関数の外部で宣言された場合、変数はグローバルになり、ファイル内の任意の関数からアクセスできます。 スコープはファイルですが、存続期間はプログラムが終了するまでです。 |
この表から、静的変数がローカル変数よりも優先される理由が明らかです。
ローカル変数と静的変数の両方を含むコード
#include <stdio.h>
int main(){
auto int a = -15;
static int b = 5;
printf( "自動変数aの値は%d \ n"、a);
printf( "静的変数bの値は%d \ n"、b);
if(a!= 0)
printf( "静的変数と自動変数の合計は%d \ n"、(b + a));
0を返します。
}
プログラム出力:
自動変数の値は-15です

静的変数の値は5です
静的変数と自動変数の合計は-10です。
また読む: Cプロジェクトのアイデア
概要
staticキーワードは、Cプログラミングで提供される多くの機能に広く使用されています。 その主な用途は、関数またはモジュールで定義された変数の範囲を制限することです。 静的変数を使用して変数と関数を外部プログラムから隠すことができるため、開発者はセキュリティを体験できます。 多くの最新のオブジェクト指向言語では、staticの使用はprivateとpublicに置き換えられています。
詳細に興味があり、業界の専門家からの指導が必要な場合は、フルスタックソフトウェア開発におけるupGrad&IIITBangloreのPGディプロマを確認してください。