C言語や C++ において、おもに変数や関数の記憶域期間やリンケージに関する指定をおこなうためのいくつかのキーワードの総称です。
C言語(C99)では、static、extern、auto、register、typedef が記憶域クラス指定子として定義されています。
static は静的記憶域期間や内部リンケージを指定します。
extern は外部リンケージを指定します。
auto は自動記憶域期間を指定しますが、もともとローカル変数はデフォルトで自動記憶域期間を持つため、明示的に使用することはほとんどありません。また、C23 で auto には型推論の意味が与えられ、従来の意味は削除されています[1]。
register は自動記憶域期間を指定するほか、オブジェクトへのアクセスを可能なかぎり高速にすることを指示するものですが、実際の効果は実装定義となっています。
typedef は記憶域期間やリンケージを指定するものではなく、型の別名を定義します。キーワードを指定する箇所がほかの記憶域クラス指定子と同じであり、また互いを同時に使用できないことによるもので、文法の便宜上の分類になっています。
それぞれのキーワードの解説は、C言語編のキーワードの一覧からリンクした先を参照してください。
C++(C++14)では、C言語と同様の static、extern、auto、register のほか、mutable、thread_local があらたな記憶域クラス指定子として追加されています。typedef は存在しますが、記憶域クラス指定子からは外れています。
mutable はクラスのデータメンバに対して適用し、const修飾されたオブジェクト内でも変更可能であることを指定します。
thread_local はスレッド記憶域期間を指定します。
それぞれのキーワードの解説は、新C++編のキーワードの一覧からリンクした先を参照してください。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
![]() |
管理者情報 | プライバシーポリシー |