記憶域クラス指定子 | Programming Place Plus 用語集

トップページ用語集

名称 🔗

解説 🔗

C言語C++ において、おもに変数関数記憶域期間やリンケージに関する指定をおこなうためのいくつかのキーワードの総称です。

C言語の場合 🔗

C言語(C99)では、staticextern、auto、register、typedef が記憶域クラス指定子として定義されています。

static は静的記憶域期間内部リンケージを指定します。

extern は外部リンケージを指定します。

auto は自動記憶域期間を指定しますが、もともとローカル変数デフォルトで自動記憶域期間を持つため、明示的に使用することはほとんどありません。また、C23 で auto には型推論の意味が与えられ、従来の意味は削除されています[1]

register は自動記憶域期間を指定するほか、オブジェクトへのアクセスを可能なかぎり高速にすることを指示するものですが、実際の効果は実装定義となっています。

typedef は記憶域期間やリンケージを指定するものではなく、別名定義します。キーワードを指定する箇所がほかの記憶域クラス指定子と同じであり、また互いを同時に使用できないことによるもので、文法の便宜上の分類になっています。

それぞれのキーワードの解説は、C言語編のキーワードの一覧からリンクした先を参照してください。

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で書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る