この記事はアフィリエイト広告を含みます
目次
C言語文法解説シリーズ
C言語はシンプルな言語ですが、
修飾子・型・ポインタ・関数・制御文など、理解しておくべき文法が多くあります。
このシリーズでは、C言語の文法をテーマごとに整理して解説しています。
気になる文法から読めるように一覧としてまとめました。
記事は今後も随時追加していきます。
変数・修飾子
static
staticは、変数の寿命や公開範囲を制御するキーワードです。
ローカル変数・グローバル変数・関数で意味が変わります。
あわせて読みたい
C言語のstaticはなぜ必要?公開範囲を制限する設計のメリットを解説
はじめに C言語の static は、公開範囲を制限するために使われます。 static を付けると、その変数や関数は同じファイルの中からしか見えなくなります。 つまり 他のフ…
const
constは、値の変更を禁止する修飾子です。
ポインタと組み合わせた場合の読み方が分かりにくい文法です。
あわせて読みたい
constとは?C言語で値を変更させないためのキーワード【staticとの違いも解説】
C言語文法解説シリーズ 本記事は「C言語文法解説シリーズ」の1つです。C言語の文法を、組み込み開発の視点も交えて解説します。 👉 C言語文法解説シリーズ一覧はこちら …
volatile
volatileは、コンパイラ最適化を抑制する修飾子です。
割り込みやハードウェアアクセスで使用されます。
あわせて読みたい
volatileとは?C言語で最適化を防ぐ理由と使いどころをわかりやすく解説
C言語の volatile は、static・const・extern と並ぶ修飾子の1つです。しかし、この volatile は初心者がつまずきやすいキーワードでもあります。 理由はシンプルで、 …
extern
externは、別ファイルで定義された変数・関数を参照するためのキーワードです。
あわせて読みたい
C言語のexternとは?別ファイルの変数を使う仕組みをわかりやすく解説
C言語文法解説シリーズ 本記事は「C言語文法解説シリーズ」の1つです。C言語の文法を、組み込み開発の視点も交えて解説します。 👉 C言語文法解説シリーズ一覧はこちら …
register
registerは、変数をレジスタに配置することをヒントとして与えるキーワードです。
現在のコンパイラでは無視されることも多い文法です。
C言語のregisterとは?意味・使いどころ・現在は使われない理由を分かりやすく解説
auto
autoは、自動変数を示すキーワードです。
通常は省略されるため、あまり意識されない文法です。
C言語のautoとは?意味・省略される理由・他言語との違いを解説
型・宣言
基本型とは
C言語の基本型は、データを扱うための最も基本的な仕組みです。
整数・小数・文字など、それぞれ役割が異なります。
あわせて読みたい
C言語の基本型とは?全体像と選び方をわかりやすく解説
C言語って型がいろいろあって、何を使えばいいのか分かりません… 最初はみんなそこ迷うよねまずは「基本型の全体像」から押さえよう C言語では、データを扱うために「型…
整数型とは
整数を扱う型で、char / short / int / long / long long などがあります。
最大値・最小値や、signed / unsigned の違いが重要になります。
あわせて読みたい
C言語の整数型とは?種類・最大値・使い分けまでわかりやすく解説
C言語では、整数を扱うために複数の型が用意されています。int だけでなく、char や short、long などもあり、用途に応じて使い分ける必要があります。 この記事では、…
浮動小数点型とは
小数を扱う型で、float と double があります。
精度や処理負荷の違いを理解して使い分けることが重要です。
あわせて読みたい
C言語のfloatとdoubleの違いとは?精度・誤差・使い分けを解説
はじめに floatとdoubleって何が違うの? とりあえずdouble使えばいいの? C言語を触り始めると、必ず出てくる疑問です。 一見するとどちらも「小数を扱う型」ですが、…
文字型(char)とは
char は文字を扱う型ですが、実体は1バイトの整数です。
文字コードやバイトデータとしても使われます。
あわせて読みたい
C言語のchar型とは?文字と数値の関係・signed/unsignedの違いと使い分けを解説
C言語の char 型は「文字を扱う型」として紹介されることが多いですが、実際には1バイト(8ビット)の整数型です。 そのため、文字だけでなく、数値やバイトデータとし…
文字コードについても解説しています。
あわせて読みたい
ASCIIコード表とは?文字コード一覧と仕組みをわかりやすく解説
ASCIIコード表 まずは実際のASCIIコード表を確認しましょう。 ASCIIコード表は、0〜31・32〜63・64〜95・96〜127 の4ブロックに分けて並べています。 文字・10進数・16…
あわせて読みたい
UTF-8とは?ASCIIコードとの違い・仕組み・使い方まで完全解説
UTF-8とは? UTF-8とは、世界中の文字を扱うための文字コードです。 英語だけでなく、日本語・中国語・絵文字などもすべて表現できます。 👉 現在のWebやプログラミング…
typedef
typedefは、既存の型に別名を付けるためのキーワードです。
あわせて読みたい
C言語の typedef とは?型の別名の意味と struct との組み合わせをわかりやすく解説
C言語文法解説シリーズ 本記事は「C言語文法解説シリーズ」の1つです。C言語の文法を、組み込み開発の視点も交えて解説します。 👉 C言語文法解説シリーズ一覧はこちら …
enum
enumは、名前付き定数を定義する列挙型です。
あわせて読みたい
C言語のenumとは?整数との違いと使いどころをわかりやすく解説
はじめに C言語の enum は、意味のある整数に名前を付ける仕組みです。 たとえば次のようなコードを見てください。 Cint mode = 1; if (mode == 1) { start(); }int mod…
struct
structは、複数のデータをまとめる構造体です。
あわせて読みたい
C言語のstructとは?複数のデータをまとめる構造体をわかりやすく解説
C言語文法解説シリーズ 本記事は「C言語文法解説シリーズ」の1つです。C言語の文法を、組み込み開発の視点も交えて解説します。 👉 C言語文法解説シリーズ一覧はこちら …
union
unionは、同じメモリを複数の型で共有するユーザー定義型です。
あわせて読みたい
C言語のunionとは?structとの違いと使いどころをわかりやすく解説
C言語文法解説シリーズ 本記事は「C言語文法解説シリーズ」の1つです。C言語の文法を、組み込み開発の視点も交えて解説します。 👉 C言語文法解説シリーズ一覧はこちら …
ポインタ
ポインタまとめ(完全ガイド)
ポインタ関連の記事をまとめました。
基礎から応用まで順番に理解できます。
あわせて読みたい
C言語ポインタ完全ガイド|基礎から応用までまとめ
ポインタはC言語で最も重要で、最もつまずきやすい文法です。 アドレスとは何か 配列とポインタの違い const付きポインタ ダブルポインタ voidポインタ 関数ポインタ こ…
ポインタとは
ポインタは、変数のアドレス(メモリ上の場所)を扱うための文法です。
* と & の意味、基本的な使い方を解説します。
あわせて読みたい
C言語のポインタとは?アドレス・*・&の意味を基礎からわかりやすく解説
C言語ポインタ解説シリーズ 本記事は「C言語ポインタ解説シリーズ」の1つです。C言語のポインタを、組み込み開発の視点も交えて解説します。 C言語ポインタ解説シリーズ…
配列とポインタの違い
配列とポインタは似た動きをしますが、サイズや代入の可否など重要な違いがあります。
混乱しやすい関係を分かりやすく整理します。
あわせて読みたい
配列とポインタの違いとは?C言語で混乱しやすい関係をわかりやすく解説
C言語では「配列とポインタは同じ」と言われることがあります。しかし、配列とポインタは別物です。 確かに似た動きをしますが、違いを理解していないとバグの原因にな…
関数ポインタとは
関数のアドレスを扱うポインタの使い方を解説します。
コールバック処理などで使われる重要な文法です。
あわせて読みたい
関数ポインタとは?C言語で関数のアドレスを扱う方法をわかりやすく解説
C言語ポインタ解説シリーズ 本記事は「C言語ポインタ解説シリーズ」の1つです。C言語のポインタを、組み込み開発の視点も交えて解説します。 C言語ポインタ解説シリーズ…
ポインタのconst
ポインタとconstを組み合わせた場合の意味の違いを解説します。
const int *p と int *const p の違いも整理します。
あわせて読みたい
C言語 ポインタのconstとは?constの位置による違いを完全解説
C言語ポインタ解説シリーズ 本記事は「C言語ポインタ解説シリーズ」の1つです。C言語のポインタを、組み込み開発の視点も交えて解説します。 C言語ポインタ解説シリーズ…
ダブルポインタとは
ポインタのポインタ(二重ポインタ)の仕組みを解説します。
関数でポインタを書き換える場合などに使用されます。
あわせて読みたい
ダブルポインタとは?C言語のポインタのポインタをわかりやすく解説
はじめに ダブルポインタとはポインタを指すポインタ のことです。 Cint **pp;int **pp; このように * が2つ付きます。 最初は分かりにくいですが、順番に理解すれば簡…
voidポインタとは
型を持たないポインタであるvoidポインタの使い方と注意点を解説します。
汎用的なポインタとして使われます。
あわせて読みたい
voidポインタとは?C言語のvoid*の意味と使い方をわかりやすく解説
C言語ポインタ解説シリーズ 本記事は「C言語ポインタ解説シリーズ」の1つです。C言語のポインタを、組み込み開発の視点も交えて解説します。 C言語ポインタ解説シリーズ…
malloc / freeとは
malloc / freeは、ポインタを使って動的にメモリを確保・解放する仕組みです。
ヒープ領域を扱うための重要な概念であり、配列サイズを実行時に決めたい場合などに使用されます。
あわせて読みたい
malloc / freeとは?C言語の動的メモリ確保を初心者向けに解説
C言語ポインタ解説シリーズ 本記事は「C言語ポインタ解説シリーズ」の1つです。C言語のポインタを、組み込み開発の視点も交えて解説します。 C言語ポインタ解説シリーズ…
※ヒープとスタックの違いについては、メモリ領域の記事で詳しく解説しています。
あわせて読みたい
スタック領域とは?C言語のStackの仕組みとヒープとの違いを解説
C言語のプログラムでは、メモリは複数の領域に分かれて管理されています。 例えば次のような領域があります。 text領域:プログラムのコード data領域:初期値ありのグ…
関数
関数とは
関数とは、処理をひとまとまりにしたものです。
再利用・可読性・保守性の向上のために使用されます。
あわせて読みたい
関数とは?C言語における役割とメリットを初心者向けに解説
C言語を学び始めると、必ず出てくるのが「関数」です。 なんとなく使ってはいるけれど、「そもそも関数って何のためにあるのか?」をしっかり説明できるでしょうか。 こ…
関数宣言と定義の違いとは
関数宣言は、関数の「存在」と「型」をコンパイラに伝える役割があります。
関数定義には、実際の処理内容を書きます。
👉 C言語は上から読むため、宣言が重要になります
あわせて読みたい
関数宣言と定義の違いとは?なぜ必要なのかを初心者向けに解説
C言語で関数を学び始めると、最初に出てくるのが「関数宣言」と「関数定義」です。 なんとなく書いて動いているけど、「宣言って何?なくてもよくない?」と感じたこと…
値渡しとアドレス渡しの違いとは
C言語では、関数に値を渡しても「元の値が変わらない」ことがあります。
これは「値渡し」と「アドレス渡し」という仕組みによるものです。
👉 データの受け渡しの理解に直結する重要なポイントです
あわせて読みたい
値渡しとアドレス渡しの違いとは?C言語の引数の仕組みを解説
C言語で関数を使うときに、必ず出てくるのが「引数」です。 なんとなく値を渡して使っているけれど、「実際に何が起きているのか?」を理解しているでしょうか。 この記…
static関数とは
static関数は、同じファイル内からしか呼び出せない関数です。
👉 関数の公開範囲を制限し、設計を整理するために使われます
static関数とは?C言語での役割とメリットをわかりやすく解説
inline関数とは
inline関数とは、関数呼び出しをせず、処理をその場に展開する仕組みです。
👉 関数の設計に加えて、「性能(最適化)」に関わる概念です
inline関数とは?C言語での仕組みと使いどころをわかりやすく解説
可変長引数とは
可変長引数とは、引数の数を可変にできる関数の仕組みです。
👉 柔軟な引数の扱いが可能になりますが、型安全でないため注意が必要です。
可変長引数とは?C言語での仕組みと使いどころをわかりやすく解説
制御構文
if文
条件によって処理を分岐するための基本構文で、trueなら実行・falseならスキップされる仕組みです。
あわせて読みたい
C言語のif文とは?条件分岐の基本からelse・else ifまで徹底解説
if文とは if文とは、条件によって処理を分岐するための構文です。 プログラムは通常、上から順番に処理が実行されますが、if文を使うことで「条件によって異なる処理」…
switch文
値に応じて処理を分岐する構文で、enumと組み合わせると可読性と保守性が大きく向上します。
あわせて読みたい
C言語のswitch文とは?if文との違いと使い分け・実務ポイントまで徹底解説
switch文とは switch文とは、値に応じて処理を分岐する構文です。 if文が「条件(true/false)」で分岐するのに対して、switch文は「値そのもの」で分岐します。 if文が…
for文
for文は、繰り返し処理を簡潔に書ける構文で、1ループごとの動きを理解することで仕組みがしっかり分かります。
あわせて読みたい
for文とは?C言語の繰り返し処理を初心者でも理解できるように解説
C言語では、同じ処理を何度も繰り返したい場面がよくあります。 例えば: 配列の要素を順番に処理する 1〜100までの数値を表示する 条件を満たすまで処理を繰り返す こ…
while文
while文は、条件が成立している間だけ処理を繰り返す制御構文で、回数が決まっていない処理に適しています。
あわせて読みたい
while文とは?C言語の繰り返し処理をfor文との違いも含めてわかりやすく解説
C言語では、繰り返し処理を行う方法がいくつかあります。 その中でも while文 は、「条件を満たしている間だけ処理を続ける」構文です。 while文とは while文とは、条件…
do-while文
do-while文は、処理を1回実行してから条件判定を行うループで、必ず1回は処理が実行されるのが特徴です。
do-while文とは?C言語の繰り返し処理をwhile文との違いも含めてわかりやすく解説
break / continue とは
breakはループを終了し、continueはその回の処理をスキップする構文で、ループの動きを細かく制御するために使われます。
breakとcontinueの違いとは?C言語のループ制御を初心者でもわかりやすく解説
goto文とは
goto文は処理を任意の位置にジャンプさせる構文ですが、可読性が著しく低下するため現代ではほぼ使われず、基本的に使用は避けるべきです。
goto文とは?C言語で非推奨と言われる理由と使うべきでない理由を解説
二重ループ
ループを組み合わせる「二重ループ」の仕組みを、実行順序や図を使ってわかりやすく解説しています。
あわせて読みたい
C言語の二重ループとは?for文を入れ子にする仕組みを図解でわかりやすく解説
はじめに for文やwhile文を学ぶと、次に出てくるのが「二重ループ」です。 でも初心者の頃は、 ループの中にループ? どっちが先に動くの? なぜそんなことをするの? …
配列・文字列
配列とは
C言語の配列の基本とメモリ上の仕組みを、図を使って分かりやすく解説します。
あわせて読みたい
C言語 配列とは?仕組みとメモリの関係をわかりやすく解説
配列って、ただの変数が並んだものですよね? 新人さんはそう思いがちだけど、実はそこにかなり重要な仕組みがあるんだ。 配列はC言語の中でも、👉 メモリの理解に直結…
多次元配列とは
C言語の配列の基本とメモリ上の仕組みを、図を使って分かりやすく解説します。
多次元配列とは?C言語の2次元配列・3次元配列をわかりやすく解説
文字列とは
C言語の文字列は、内部では「文字コード」の集合として扱われています。
ASCIIやUTF-8などの仕組みを理解すると、文字列や文字化けの理解も深まります。
C言語の文字列とは?char配列・終端文字・文字列リテラルを分かりやすく解説
char配列とポインタの違いを理解したい方へ
C言語では、
Cchar str[] = "abc";
char *str = "abc";
の違いで混乱する人が非常に多いです。
char配列とポインタの違いについて図付きで分かりやすく解説しています。
C言語のchar配列とポインタの違いとは?初心者が混乱しやすいポイントを徹底解説
sizeofとstrlenの違い
C言語で文字列を扱っていると、
の違いで混乱しやすくなります。
sizeofとstrlenの違いについて図付きで分かりやすく解説しています。
C言語のsizeofとstrlenの違いとは?初心者が混乱しやすいポイントを徹底解説
記憶域・スコープ
ローカル変数とは?
ローカル変数は、
- 関数やブロック内だけで使える
- 関数終了で消える
- 通常はスタック領域に配置される
という特徴を持つ、最も基本的な変数です。
この記事では、
- スコープ
- 生存期間
- static変数との違い
- よくある注意点
まで、図解付きで分かりやすく解説します。
あわせて読みたい
C言語のローカル変数とは?スコープ・寿命・グローバル変数との違いを解説
はじめに C言語を学び始めると、最初によく使うのが「変数」です。 例えば: Cint x = 10;int x = 10; こうした変数の多くは、「ローカル変数」です。 しかし初心者のう…
グローバル変数とは?
グローバル変数は、
- 関数の外で宣言される
- 複数の関数から共有できる
- プログラム終了まで存在する
という特徴を持つ変数です。
便利な一方で、
につながることもあります。
あわせて読みたい
C言語のグローバル変数とは?ローカル変数との違いと注意点を解説
はじめに C言語では、変数を関数の外で宣言できます。 例えば: Cint g_count = 0;int g_count = 0; このような変数を、「グローバル変数」と呼びます。 グローバル変数…
static変数とは?
static変数は、
- 関数終了後も値を保持する
- スコープはローカルのまま
- ローカル変数とは寿命が異なる
という特徴を持つ特殊な変数です。
あわせて読みたい
C言語のstatic変数とは?ローカル変数との違いと使い方をわかりやすく解説
はじめに C言語を学んでいると、こんなコードを見かけることがあります。 Cstatic int count = 0;static int count = 0; この static 、初心者のうちはかなり分かりにく…
記憶域期間とは?
記憶域期間とは、
を表す概念です。
この記事では、
の寿命の違いを整理しながら、
- スコープとの違い
- なぜstaticで値が残るのか
- メモリ領域との関係
まで、図解付きで分かりやすく解説します。
あわせて読みたい
C言語の記憶域期間とは?変数の寿命をローカル・static・グローバルで理解しよう
はじめに C言語では、 Cint x;int x; のように変数を宣言できます。 しかし実は、変数には「いつ生成され、いつ消えるのか」という概念があります。 これを、記憶域期間…
スコープとは?
スコープとは、
が「どこから使えるか」を表す範囲のことです。
この記事では、
のスコープの違いを整理しながら、
- 記憶域期間との違い
- なぜstaticで公開範囲を制限するのか
- 組み込みで重要な理由
まで、図解付きで分かりやすく解説します。
あわせて読みたい
C言語のスコープとは?変数が「見える範囲」を初心者向けに解説
はじめに C言語では、 Cint x = 10;int x = 10; のように変数を宣言できます。 しかし、この変数はどこからでも使えるわけではありません。 変数には、「使える範囲」が…
このシリーズについて
このシリーズは、C言語の文法を辞典のように整理したものです。
気になる文法から読むことができます。
記事は随時追加していきます。
組み込みエンジニアにとってはメモリ領域や割り込みについても深く理解する必要があります。
メモリ領域や割り込み、ソフトウェア設計についても技術解説シリーズを作っているので参考にしてください。
メモリ領域解説シリーズ
メモリレイアウトまとめ|メモリレイアウトからポインタまでtext・data・bss・heap・stackを体系的に理…
メモリ構造をまとめて理解したい 先輩、メモリ関連の勉強をしたいのですがどこから勉強すればよいか分かりません! そうだね。このページではメモリ構造の全体像と、メ…
割り込み解説シリーズ
割り込み処理の基本から設計まで完全ガイド|組み込み開発のためのまとめ記事
割り込み処理をまとめて理解したい 割り込みって、結局どう設計するのが正解なんですか? ポイントは、“ISRを書くだけ”じゃなく、設計全体で考えることなんだ 組み込み…
ソフトウェア設計解説シリーズ
ソフトウェア設計解説シリーズまとめ|保守性・変更容易性・設計思想を実務目線で学ぶ
ソフトウェア設計解説シリーズ 「動けばOK」から一歩進んで、“保守しやすいソフトウェア” を作れるようになりたい そんな方向けに、 なぜその設計にするのか なぜその書…
C言語学習におすすめの書籍
C言語は、最初はシンプルに見えますが、
ポインタやメモリの理解で一気に難しく感じやすい言語です。
ここでは、初心者でも学びやすく、基礎理解を深めやすい定番書籍を紹介します。
新・明解C言語 入門編
C言語初心者に非常に人気のある定番書です。
図やサンプルコードが多く、
「ポインタ」「配列」「文字列」など、つまずきやすい部分を丁寧に理解できます。
- ポインタが苦手
- 配列との違いが分からない
- 独学で学んでいる
という方におすすめです。
リンク
苦しんで覚えるC言語
「入門書を読んだけど、まだ不安…」という方におすすめの1冊です。
初心者が混乱しやすいポイントを、
やさしい言葉で整理しながら学べます。
- エラーで止まりがち
- 文法が頭に入らない
- 一度挫折したことがある
という方にも読みやすい構成です。
リンク
独習C
手を動かしながら理解を深めたい方におすすめです。
演習問題も豊富で、
「読むだけ」で終わらず実際にコードを書きながら学習できます。
- 基礎を定着させたい
- 実際に書いて覚えたい
- 次のステップに進みたい
という方に向いています。
リンク
この記事が参考になった方へ
組み込みエンジニアとして技術を学ぶことは重要ですが、
キャリアや副業についても同時に考える必要があります。
副業の現実や市場価値、今後のキャリア戦略については、
こちらの記事でまとめています。
エンジニアのキャリアと副業シリーズ
組み込みエンジニアのキャリアと副業ロードマップ|現実・戦略・実体験まとめ
組み込みエンジニアとして働いていると、こんな悩みを感じることはないでしょうか? ・副業をしたいけど案件が見つからない・そもそも組み込みエンジニアは副業できるの…
技術に関するご相談・開発・自動化ツール作成・記事執筆などのご依頼も承っています。
小さなご相談からでもお気軽にご連絡ください。
コメント