C言語文法一覧まとめ|修飾子・型・ポインタ・関数・制御文【解説シリーズ】

目次

C言語文法解説シリーズ

C言語はシンプルな言語ですが、
修飾子・型・ポインタ・関数・制御文など、理解しておくべき文法が多くあります。

このシリーズでは、C言語の文法をテーマごとに整理して解説しています。
気になる文法から読めるように一覧としてまとめました。

記事は今後も随時追加していきます。


変数・修飾子

static

staticは、変数の寿命や公開範囲を制御するキーワードです。
ローカル変数・グローバル変数・関数で意味が変わります。


const

constは、値の変更を禁止する修飾子です。
ポインタと組み合わせた場合の読み方が分かりにくい文法です。


volatile

volatileは、コンパイラ最適化を抑制する修飾子です。
割り込みやハードウェアアクセスで使用されます。


extern

externは、別ファイルで定義された変数・関数を参照するためのキーワードです。


register

registerは、変数をレジスタに配置することをヒントとして与えるキーワードです。
現在のコンパイラでは無視されることも多い文法です。

C言語のregisterとは?意味・使いどころ・現在は使われない理由を分かりやすく解説


auto

autoは、自動変数を示すキーワードです。
通常は省略されるため、あまり意識されない文法です。

C言語のautoとは?意味・省略される理由・他言語との違いを解説


型・宣言

基本型とは

C言語の基本型は、データを扱うための最も基本的な仕組みです。
整数・小数・文字など、それぞれ役割が異なります。


整数型とは

整数を扱う型で、char / short / int / long / long long などがあります。
最大値・最小値や、signed / unsigned の違いが重要になります。


浮動小数点型とは

小数を扱う型で、float と double があります。
精度や処理負荷の違いを理解して使い分けることが重要です。


文字型(char)とは

char は文字を扱う型ですが、実体は1バイトの整数です。
文字コードやバイトデータとしても使われます。

文字コードについても解説しています。


typedef

typedefは、既存の型に別名を付けるためのキーワードです。


enum

enumは、名前付き定数を定義する列挙型です。


struct

structは、複数のデータをまとめる構造体です。


union

unionは、同じメモリを複数の型で共有するユーザー定義型です。


ポインタ

ポインタまとめ(完全ガイド)

ポインタ関連の記事をまとめました。
基礎から応用まで順番に理解できます。

ポインタとは

ポインタは、変数のアドレス(メモリ上の場所)を扱うための文法です。
*& の意味、基本的な使い方を解説します。


配列とポインタの違い

配列とポインタは似た動きをしますが、サイズや代入の可否など重要な違いがあります。
混乱しやすい関係を分かりやすく整理します。


関数ポインタとは

関数のアドレスを扱うポインタの使い方を解説します。
コールバック処理などで使われる重要な文法です。


ポインタのconst

ポインタとconstを組み合わせた場合の意味の違いを解説します。
const int *pint *const p の違いも整理します。


ダブルポインタとは

ポインタのポインタ(二重ポインタ)の仕組みを解説します。
関数でポインタを書き換える場合などに使用されます。


voidポインタとは

型を持たないポインタであるvoidポインタの使い方と注意点を解説します。
汎用的なポインタとして使われます。

malloc / freeとは

malloc / freeは、ポインタを使って動的にメモリを確保・解放する仕組みです。
ヒープ領域を扱うための重要な概念であり、配列サイズを実行時に決めたい場合などに使用されます。

※ヒープとスタックの違いについては、メモリ領域の記事で詳しく解説しています。


関数

関数とは

関数とは、処理をひとまとまりにしたものです。
再利用・可読性・保守性の向上のために使用されます。

関数宣言と定義の違いとは

関数宣言は、関数の「存在」と「型」をコンパイラに伝える役割があります。
関数定義には、実際の処理内容を書きます。

👉 C言語は上から読むため、宣言が重要になります

値渡しとアドレス渡しの違いとは

C言語では、関数に値を渡しても「元の値が変わらない」ことがあります。
これは「値渡し」と「アドレス渡し」という仕組みによるものです。

👉 データの受け渡しの理解に直結する重要なポイントです

static関数とは

static関数は、同じファイル内からしか呼び出せない関数です。

👉 関数の公開範囲を制限し、設計を整理するために使われます

static関数とは?C言語での役割とメリットをわかりやすく解説

inline関数とは

inline関数とは、関数呼び出しをせず、処理をその場に展開する仕組みです。

👉 関数の設計に加えて、「性能(最適化)」に関わる概念です

inline関数とは?C言語での仕組みと使いどころをわかりやすく解説

可変長引数とは

可変長引数とは、引数の数を可変にできる関数の仕組みです。
👉 柔軟な引数の扱いが可能になりますが、型安全でないため注意が必要です。

可変長引数とは?C言語での仕組みと使いどころをわかりやすく解説


制御構文

if文

条件によって処理を分岐するための基本構文で、trueなら実行・falseならスキップされる仕組みです。

switch文

値に応じて処理を分岐する構文で、enumと組み合わせると可読性と保守性が大きく向上します。

for文

for文は、繰り返し処理を簡潔に書ける構文で、1ループごとの動きを理解することで仕組みがしっかり分かります。

while文

while文は、条件が成立している間だけ処理を繰り返す制御構文で、回数が決まっていない処理に適しています。

do-while文

do-while文は、処理を1回実行してから条件判定を行うループで、必ず1回は処理が実行されるのが特徴です。

do-while文とは?C言語の繰り返し処理をwhile文との違いも含めてわかりやすく解説

break / continue とは

breakはループを終了し、continueはその回の処理をスキップする構文で、ループの動きを細かく制御するために使われます。

breakとcontinueの違いとは?C言語のループ制御を初心者でもわかりやすく解説

goto文とは

goto文は処理を任意の位置にジャンプさせる構文ですが、可読性が著しく低下するため現代ではほぼ使われず、基本的に使用は避けるべきです。

goto文とは?C言語で非推奨と言われる理由と使うべきでない理由を解説


二重ループ

ループを組み合わせる「二重ループ」の仕組みを、実行順序や図を使ってわかりやすく解説しています。

配列・文字列

配列とは

C言語の配列の基本とメモリ上の仕組みを、図を使って分かりやすく解説します。

多次元配列とは

C言語の配列の基本とメモリ上の仕組みを、図を使って分かりやすく解説します。

多次元配列とは?C言語の2次元配列・3次元配列をわかりやすく解説

文字列とは

C言語の文字列は、内部では「文字コード」の集合として扱われています。
ASCIIやUTF-8などの仕組みを理解すると、文字列や文字化けの理解も深まります。

C言語の文字列とは?char配列・終端文字・文字列リテラルを分かりやすく解説

char配列とポインタの違いを理解したい方へ

C言語では、

C
char str[] = "abc";
char *str = "abc";

の違いで混乱する人が非常に多いです。

char配列とポインタの違いについて図付きで分かりやすく解説しています。

C言語のchar配列とポインタの違いとは?初心者が混乱しやすいポイントを徹底解説

sizeofとstrlenの違い

C言語で文字列を扱っていると、

C
sizeof(str)
strlen(str)

の違いで混乱しやすくなります。

sizeofとstrlenの違いについて図付きで分かりやすく解説しています。

C言語のsizeofとstrlenの違いとは?初心者が混乱しやすいポイントを徹底解説


記憶域・スコープ

ローカル変数とは?

ローカル変数は、

  • 関数やブロック内だけで使える
  • 関数終了で消える
  • 通常はスタック領域に配置される

という特徴を持つ、最も基本的な変数です。

この記事では、

  • スコープ
  • 生存期間
  • static変数との違い
  • よくある注意点

まで、図解付きで分かりやすく解説します。

グローバル変数とは?

グローバル変数は、

  • 関数の外で宣言される
  • 複数の関数から共有できる
  • プログラム終了まで存在する

という特徴を持つ変数です。

便利な一方で、

  • 状態依存
  • バグ原因
  • 影響範囲の拡大

につながることもあります。

static変数とは?

static変数は、

  • 関数終了後も値を保持する
  • スコープはローカルのまま
  • ローカル変数とは寿命が異なる

という特徴を持つ特殊な変数です。

記憶域期間とは?

記憶域期間とは、

  • 変数がいつ生成されるか
  • いつ破棄されるか

を表す概念です。

この記事では、

  • ローカル変数
  • static変数
  • グローバル変数

の寿命の違いを整理しながら、

  • スコープとの違い
  • なぜstaticで値が残るのか
  • メモリ領域との関係

まで、図解付きで分かりやすく解説します。

スコープとは?

スコープとは、

  • 変数
  • 関数

が「どこから使えるか」を表す範囲のことです。

この記事では、

  • ローカル変数
  • グローバル変数
  • static変数

のスコープの違いを整理しながら、

  • 記憶域期間との違い
  • なぜstaticで公開範囲を制限するのか
  • 組み込みで重要な理由

まで、図解付きで分かりやすく解説します。


このシリーズについて

このシリーズは、C言語の文法を辞典のように整理したものです。
気になる文法から読むことができます。

記事は随時追加していきます。

組み込みエンジニアにとってはメモリ領域や割り込みについても深く理解する必要があります。

メモリ領域や割り込み、ソフトウェア設計についても技術解説シリーズを作っているので参考にしてください。

C言語学習におすすめの書籍

C言語は、最初はシンプルに見えますが、
ポインタやメモリの理解で一気に難しく感じやすい言語です。

ここでは、初心者でも学びやすく、基礎理解を深めやすい定番書籍を紹介します。


新・明解C言語 入門編

C言語初心者に非常に人気のある定番書です。

図やサンプルコードが多く、
「ポインタ」「配列」「文字列」など、つまずきやすい部分を丁寧に理解できます。

  • ポインタが苦手
  • 配列との違いが分からない
  • 独学で学んでいる

という方におすすめです。


苦しんで覚えるC言語

「入門書を読んだけど、まだ不安…」という方におすすめの1冊です。

初心者が混乱しやすいポイントを、
やさしい言葉で整理しながら学べます。

  • エラーで止まりがち
  • 文法が頭に入らない
  • 一度挫折したことがある

という方にも読みやすい構成です。


独習C

手を動かしながら理解を深めたい方におすすめです。

演習問題も豊富で、
「読むだけ」で終わらず実際にコードを書きながら学習できます。

  • 基礎を定着させたい
  • 実際に書いて覚えたい
  • 次のステップに進みたい

という方に向いています。

この記事が参考になった方へ

組み込みエンジニアとして技術を学ぶことは重要ですが、
キャリアや副業についても同時に考える必要があります。

副業の現実や市場価値、今後のキャリア戦略については、
こちらの記事でまとめています。

技術に関するご相談・開発・自動化ツール作成・記事執筆などのご依頼も承っています。

小さなご相談からでもお気軽にご連絡ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

組み込みソフトエンジニアとして働きながら、
C言語・メモリ・ポインタなどの基礎から実務まで解説しています。

副業・キャリアについても実体験ベースで発信中です。

X・Qiita・noteでも発信しています。
X:更新情報・日常
Qiita:技術発信
note:キャリア・副業

▼まずはここから読むのがおすすめ
C言語文法シリーズ
メモリ領域解説シリーズ
割り込み処理解説シリーズ
ソフトウェア設計解説シリーズ
キャリアと副業ロードマップ

コメント

コメントする


目次