宣言には型指定子と宣言子(但し,タグ或いは列挙体メンバがある場合を除く)が必須です。必須ではないものの,データの扱いに特定の属性を付与するもののとして「型修飾子」があります。型修飾子として使用されるキーワード(予約語)は,const,volatile,そして restrict の3つです。
 型修飾子xxx が付された型をxxx 修飾型(xxx -qualified type)と呼びます。例えば,
const int c = 1;
といった場合,オブジェクト c は const修飾型(const-qualified type)であり,その型は const int です。また,
const int m[8];
の場合,const修飾型 const int の配列(各要素が const修飾型)であり,配列型(式)m 自体は const修飾型ではありません。[C99, 6.7.3, 8] ポインタの場合,例えば,
const int *p; int *const cp;
のポインタ p は const修飾型 const int へのポインタでその型は const int * ですが,ポインタ cp は非修飾型 int へのポインタであり,ポインタ cp 自体が const修飾型となります。[C99, 6.7.5.1]