Project_OKI’s diary

エンジニアの勉強ブログ

C言語基礎知識36(型修飾子、記憶クラス指定子)

型修飾子、記憶クラス指定子

この記事では、変数型の前につく、型修飾子、記憶クラス指定子についてのまとめを記載する。

 

1. 目的

 ・型修飾子、記憶クラス指定子について知る。

 ・型修飾子、記憶クラス指定子の種類についてまとめる。

 

目次

 

2. 型修飾子とは

 ・変数宣言時に変数の性質を明示的に指定するために使用される。

 

 型修飾子の種類

型修飾子  説明
const 変数が読み取り専用であることを示す。変数の値は変更できず、コンパイラが最適化を行いやすくする。
volatile

コンパイラの最適化の対象外とする。変数の値が外部から変更される可能性がある。

restrict ポインタが指し示すメモリ領域に対する別のポインタが存在しないことを示す。

 ※restrictは使用しない方がよいらしい。(MISRA C:2012により)

 

3. 記憶クラス指定子

 変数や関数のメモリ割り当てと寿命を制御するための指定子。

 

記憶クラス指定子の種類

指定子 説明
auto ローカル変数のデフォルト指定子。通常は省略可能。
register

レジスタ変数として割り当てることを要求する指定子。

static

静的変数と静的関数を宣言するための指定子。

静的変数はメモリに保持され、初期化された値を保持し続ける。

他のファイルからはアクセスできない。

extern

外部変数と外部関数を宣言するための指定子。

他のファイルからアクセス可能とする。

typedef

新しい型の別名を作成するための指定子。

新しい型名を宣言する際に使用される。

_Thread_local

C11およびC++11以降で使用可能な指定子。

スレッドローカル変数を宣言するためのもの。

各スレッドが独自の値を持つ変数を作成できる。

 

 詳細に関しては下記記事を参照

 ・C言語基礎知識9(typedef) - Project_OKI’s diary

 ・C言語基礎知識10(extern宣言) - Project_OKI’s diary

 ・C言語基礎知識34(静的変数、static修飾子について) - Project_OKI’s diary

 

その他

 データ型に関しては下記記事の 7.そのほか を参照

 →組み込みの為のC言語基礎知識1(printf) - Project_OKI’s diary

 

 

組み込みC言語