C言語における変数の格納場所
2644 ワード
変数の格納場所
注:変数のストレージタイプを変更します.変数の役割ドメインは変更されません.コードブロック内に名前でアクセスするだけです.
2つの概念を明確にします.
変数の初期化
明示的な初期化がなければ、静的変数の初期化は0になります.自動変数は初期化されず、ランダム値です.
static定義変数
#include
static int m;
int fun1()
{
static int n = 0;
n++;
printf("n=%d
", n);
}
int fun2()
{
m = 0;
m++;
printf("m=%d
", m);
}
int main()
{
int i = 0;
for (i = 0; i < 5; ++i)
fun1();
for (i = 0; i < 5; ++i)
fun2();
return 0;
}
staticまとめ:
変数の役割ドメイン、リンク属性、およびストレージタイプの概要
変数のタイプ
場所の宣言
スタックに格納するかどうか
アクティブドメイン
staticと宣言した場合
グローバル変数
すべてのコードブロックの外
いいえ
宣言からファイルの最後まで
リンクのプロパティが変更され、他のファイルからのアクセスは許可されません.
ローカル変数
コードブロックの先頭
はい
コードブロック全体
ストレージタイプはスタック領域から静的領域に変わり、プログラム全体の実行期間中に値が保持されます.
形式パラメータ
関数ヘッダ
はい
かんすう全体
許可しない