メインコンテンツまでスキップ

C

C言語は、コンピュータの仕組みに近い場所を扱える言語です。OS、組み込み機器、マイコン、ロボット、家電制御など、ハードウェアに近い開発で使われます。

何ができる?

  • マイコンやセンサーを制御する
  • OSや低レイヤーの仕組みを学ぶ
  • メモリやCPUの考え方を理解する
  • 高速で小さなプログラムを書く
  • C++やRustを学ぶ土台を作る

学習ゴール

  • C言語の基本構造を読める
  • 変数、条件分岐、繰り返し、関数を書ける
  • 配列と文字列の基本を理解できる
  • ポインタが「メモリ上の場所」を扱うものだと説明できる
  • メモリ管理の難しさを知る

開発環境の準備

方法向いている人
オンライン実行環境文法だけ試したい人
GCC / Clangローカルでコンパイルしたい人
Visual StudioWindowsで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 / ClangC言語をコンパイルする
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 を使える
  • 変数に型を書ける
  • iffor を使える
  • 配列を読める
  • ポインタの考え方をざっくり説明できる

次に学ぶこと

組み込みやロボットに進むならArduinoやマイコン制御、ゲームや高速処理に進むならC++、安全な低レイヤー開発に興味があるならRustを学びましょう。