C言語まとめの変数の種類


1.変数の3つの属性
役割ドメインは4種類あります:コードブロック役割ドメイン、ファイル役割ドメイン、プロトタイプ役割ドメイン(本明細書では無視できます)、関数役割ドメイン(無視できます)リンク属性は3種類あります:external、internal、noneストレージ場所は3種類あります:メモリストレージ領域、スタック領域、レジスタ(省略可能)
詳細は別の章にあります.
2.変数の分類
変数別の役割ドメインはグローバル変数とローカル変数に分けられ、変数別の記憶期間は自動記憶と静的記憶に分けられる.
3.C変数の種類
3.1グローバル変数
定義:関数(コード・ブロック)の外で宣言される変数.グローバル変数と呼ばれます.説明:プログラムが複数のソース・ファイルに分割されてコンパイルされる場合、グローバル変数は他のソース・ファイルから参照できます.役割ドメイン:ソース・ファイル、すなわちファイル役割ドメイン・リンク・プロパティ:external(このプロパティは、他のソース・ファイルがこの変数を参照できることを示します)格納場所:メモリ
例:
int i;
int main(void)
{}

3.2 staticを加えたグローバル変数
定義:コードブロック以外の静的変数.説明:他のソースファイルではグローバル変数を適用できません.現在のソースファイルでのみ参照できます.≪アクティブ・ドメイン|Active Domain|emdw≫:ソース・ファイル、すなわちファイル・アクティブ・ドメイン接続プロパティ:internal(他のソース・ファイルではこの変数を参照できません)ストレージ・サイト:メモリ
staticの役割:変数のリンクプロパティを変更します.
例:
static int i;
int main(void)
{}

3.3ローカル変数
定義:関数(コードブロック)内部で宣言される変数.ローカル変数と呼ばれます.説明:(何を書けばいいか分かりません...)役割ドメイン:コードブロック内部({}で囲まれた範囲)、すなわちコードブロック役割ドメインリンク属性:none格納場所:一般スタック、すなわち自動(auto)変数
例:
int main(void)
{
    int i;
}

3.4 static付きローカル変数
定義:コードブロック内の静的変数.説明:関数呼び出しが完了するか、コードブロックが終了すると、この変数は消えません.役割ドメイン:コードブロック内部リンクプロパティ:noneストレージサイト:メモリ
staticの役割:変数のストレージタイプを変更する
例:
void foo(void)
{
    static int i;
}

4.まとめ
最後に『Cとポインタ』の第3章の1つの表を借りて総括する
変数タイプのまとめ
変数のタイプ
宣言の場所
スタックに保存するかどうか
アクティブドメイン
staticと宣言した場合
グローバル
すべてのコードブロックの外
いいえ
宣言からファイルの最後まで
他のソースファイルからのアクセスは許可されていません
ローカル
コードブロックの先頭
はい
コードブロック全体
変数はスタックに格納されず、プログラムの実行期間全体にわたって値が保持されます.
参考資料:
前橋和弥、呉雅明.征服C指针[M].人民郵便出版社、2013.