※本記事は広告を含みます。
C言語文法解説シリーズ
本記事は「C言語文法解説シリーズ」の1つです。
C言語の文法を、組み込み開発の視点も交えて解説します。
C言語の const は、値を変更できないことを示すキーワードです。
変数に const を付けることで、その値は書き換え不可になります。
const int value = 10;
value = 20; // エラーこのように、const を付けた変数は代入できません。
でも const の役割はそれだけではありません。
- 誤った書き換え防止
- 設計意図の明確化
- 関数の安全性向上
- ROM配置(組み込み)
など、実務でも非常に重要な意味を持ちます。
この記事では const の意味と使い方を、
設計視点も含めて解説します。
constとは?
const は「この値は変更しない」ことを示します。
const int a = 10;この場合
- a は読み取り可能
- a は書き換え不可
になります。
a = 20; // コンパイルエラー
初心者さんこれは定数ってこと?
define と同じですか?



似てるけど違うよ。const は変数なんだ
const と #define の違い
#define は「文字の置き換え」です。
#define SIZE 10
int array[SIZE];これはコンパイル前にこう変換されます。
int array[10];つまり SIZE という変数は存在せず、
単に文字が置き換えられているだけです。
一方 const の場合
const int size = 10;
int array[size];こちらは
- size という変数が存在する
- 型がある
- デバッガで確認できる
という違いがあります。
比較すると
| 項目 | const | define |
|---|---|---|
| 型 | ある | ない |
| 変数 | 存在する | 存在しない |
| デバッグ | できる | できない |
| スコープ | ある | ない |
| メモリ | 使う | 使わない |
基本的には const を使う方が安全です。
なぜ const を使うのか
const は「誤った変更を防ぐ」ために使います。
例えば
int max = 100;この場合、どこからでも変更できてしまいます。
max = 0; // 誤って変更でも const を付けると
const int max = 100;書き換えが禁止されます。
これにより
- バグ防止
- 設計意図の明確化
- 安全性向上
という効果があります。
constとポインタ(重要)
const はポインタと組み合わせると意味が変わります。
値を変更できない
const int *p;これは
「pが指す値を変更できない」
*p = 10; // NGでもポインタは変更可能
p = &a; // OKポインタ自体を変更できない
int * const p;これは
「pの指す先を変更できない」
p = &a; // NGでも値は変更可能
*p = 10; // OK両方変更不可
const int * const p;これは
- 値変更不可
- アドレス変更不可
になります。
関数引数に const を付ける意味
const は関数引数でよく使われます。
例えば
void print(int *data)この関数は
- data を変更するか不明
- 呼び出し側が不安
になります。
でも const を付けると
void print(const int *data)この関数は
「data を変更しない」
ことが保証されます。



呼び出す側が安心できますね



あと、誤って書き換えるバグも防げる
constは組み込み開発で重要
const は組み込みでは特に重要です。
const char message[] = "hello";このようなデータは変更しないため、
ROMに配置される場合があります。
つまり
- RAM使用量削減
- メモリ節約
につながります。



組み込みでは const を付けるかで配置が変わるんだ



かなり重要ですね
constとstaticの違い
よく混同されますが意味は全く違います。
| キーワード | 意味 |
|---|---|
| const | 変更不可 |
| static | 寿命固定 / 公開範囲制限 |
例
static const int table_size = 16;これは
- const → 値変更不可
- static → 外部非公開
両方の意味になります。
constはどこで使う?
よく使う場所
① 設定値
② テーブルデータ
③ 文字列
④ 関数引数
⑤ 読み取り専用データ
例
const uint8_t table[8] = {
1,2,3,4,5,6,7,8
};まとめ
const は
- 値を変更不可にする
- 誤変更防止
- 設計意図の明確化
- 関数の安全性向上
- ROM配置(組み込み)
という役割を持つ重要なキーワードです。
static と同じく、
実務では必須レベルの文法です。
この記事が参考になった方へ
C言語の基本文法を一覧で整理しています。
技術に関するご相談・開発・自動化ツール作成・記事執筆などのご依頼も承っています。
小さなご相談からでもお気軽にご連絡ください。









コメント