C
C言語は、コンピュータの仕組みに近い場所を扱える言語です。OS、組み込み機器、マイコン、ロボット、家電制御など、ハードウェアに近い開発で使われます。
何ができる?
- マイコンやセンサーを制御する
- OSや低レイヤーの仕組みを学ぶ
- メモリやCPUの考え方を理解する
- 高速で小さなプログラムを書く
- C++やRustを学ぶ土台を作る
学習ゴール
- C言語の基本構造を読める
- 変数、条件分岐、繰り返し、関数を書ける
- 配列と文字列の基本を理解できる
- ポインタが「メモリ上の場所」を扱うものだと説明できる
- メモリ管理の難しさを知る
開発環境の準備
| 方法 | 向いている人 |
|---|---|
| オンライン実行環境 | 文法だけ試したい人 |
| GCC / Clang | ローカルでコンパイルしたい人 |
| Visual Studio | WindowsでC/C++を学びたい人 |
| Arduino IDE | マイコン制御を試したい人 |
最初はオンライン実行環境で文法を試し、慣れてきたらローカルでコンパイルする流れがおすすめです。
基本構造
#include <stdio.h>
int main(void) {
printf("こんにちは、C\n");
return 0;
}
main はプログラムの入口です。C言語では、処理の最後に ; を書きます。
変数と型
int age = 15;
double height = 165.5;
char grade = 'A';
C言語は型を明確に書きます。整数、小数、文字などを区別して扱います。
条件分岐と繰り返し
int score = 85;
if (score >= 80) {
printf("よくできました\n");
} else {
printf("もう少し練習しよう\n");
}
for (int i = 0; i < 5; i++) {
printf("%d\n", i);
}
配列
int scores[3] = {80, 95, 72};
printf("%d\n", scores[0]);
配列は同じ型のデータを並べて保存する仕組みです。0番目から数える点に注意します。
ポインタの入口
int number = 10;
int *ptr = &number;
printf("%d\n", *ptr);
ポインタは、値そのものではなく「値が置かれている場所」を扱う仕組みです。強力ですが、間違えると不具合の原因になりやすいので、少しずつ学びます。
関連技術
| 技術 | できること |
|---|---|
| GCC / Clang | C言語をコンパイルする |
| Make | ビルド手順を管理する |
| Arduino | マイコン制御を学ぶ |
| C++ | Cを拡張した高性能開発 |
| Rust | メモリ安全性を重視した低レイヤー開発 |
ミニ演習: 平均点を計算する
#include <stdio.h>
int main(void) {
int scores[3] = {80, 95, 72};
int total = 0;
for (int i = 0; i < 3; i++) {
total += scores[i];
}
printf("平均点: %d\n", total / 3);
return 0;
}
配列の数を増やしたら、どこを変える必要があるか考えてみましょう。
よくあるエラーと直し方
| 困ったこと | 原因の例 | 確認すること |
|---|---|---|
| コンパイルできない | ; の書き忘れ | 行末 |
| 文字化けや表示崩れ | 書式指定が違う | %d、%f など |
| 配列がおかしい | 範囲外アクセス | 添字の範囲 |
| クラッシュする | ポインタの扱いミス | 初期化と参照先 |
| リンクエラー | 関数定義不足 | 関数名とファイル |
チェックリスト
-
main関数の役割を説明できる -
printfを使える - 変数に型を書ける
-
ifとforを使える - 配列を読める
- ポインタの考え方をざっくり説明できる
次に学ぶこと
組み込みやロボットに進むならArduinoやマイコン制御、ゲームや高速処理に進むならC++、安全な低レイヤー開発に興味があるならRustを学びましょう。