「C言語/関数」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
→‎static 変数とポインタの必要性: グローバル変数には、かつての errno の様に有用な用途もありますが、プログラムのどこからも参照や変更ができるので、goto文と同程度に有害です。 C11からは、errno はマクロになりました。
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
タグ: 2017年版ソースエディター
215 行
static(静的)はdynamic(動的)との対比からです。ローカル変数はスタック上に一時的に記憶領域が確保され、関数を抜ける度にスコープを抜けます。
これに対して、static 変数は、プログラムが開始され終了するまでの期間に渡って同じ領域(同じアドレス)を持ち、これはグローバル変数と同じ特徴ですが、関数内で static 宣言された変数は、関数の外から参照できません。
 
なお、下記のように書くと、エラーになる
 
なお、static宣言した変数を、他の関数とも共有したい場合には、さらに「グローバル変数」という物を使います。
 
すべての関数ブロックの外の、コード前半部の部分(グローバル領域)で、変数宣言をすると、その変数は、すべての関数からアクセスできます。