このリポジトリは、C言語の基本概念を網羅した学習用のサンプルプロジェクトです。 チーム内での勉強会や独学に活用できるよう、各トピックごとに実践的なコード例を用意しています。
- GCCまたはClangコンパイラ
- Make (任意)
make all# 基本的なデータ型と演算のサンプル
make basics
# 制御構造のサンプル
make control
# 関数とポインタのサンプル
make functions
# 構造体とファイルI/Oのサンプル
make structs
# 実践プロジェクト(学生管理システム)
make app# 例: 基本的なデータ型のサンプル
gcc -o bin/basics src/01_basics/main.c -Wall -Wextra
./bin/basicsmake cleanディレクトリ: src/01_basics/
学習トピック:
- 基本的なデータ型(int, float, double, char)
- 変数の宣言と初期化
- 算術演算子、比較演算子
- ビット演算
- 型変換(キャスト)
実行方法:
./bin/basicsディレクトリ: src/02_control/
学習トピック:
- 条件分岐(if, else if, else, switch)
- ループ(for, while, do-while)
- break, continueの使用
- ネストされたループ
実行方法:
./bin/controlディレクトリ: src/03_functions/
学習トピック:
- 関数の定義と呼び出し
- 引数の値渡しと参照渡し
- ポインタの基礎
- 配列とポインタの関係
- 動的メモリ確保(malloc, free)
- 関数ポインタ
実行方法:
./bin/functionsディレクトリ: src/04_structs/
学習トピック:
- 構造体の定義と使用
- typedef
- ネストされた構造体
- ファイルの読み書き
- バイナリファイルの操作
実行方法:
./bin/structsディレクトリ: src/05_project/
学生管理システム
- 学生情報の登録、表示、検索、削除
- ファイルへのデータ保存・読み込み
- メニュー駆動のCLIアプリケーション
これまで学んだすべての概念を統合した実践的なアプリケーションです。
実行方法:
./bin/student_app- データ型と演算(30分)
src/01_basics/main.cを解説- 実際にコードを修正して動作確認
- 制御構造(30分)
src/02_control/main.cを解説- 条件分岐とループの練習問題
- 質疑応答(30分)
- 関数とポインタ(45分)
src/03_functions/main.cを解説- ポインタの概念を丁寧に説明
- メモリの図解
- 構造体とファイルI/O(30分)
src/04_structs/main.cを解説
- 質疑応答(15分)
- プロジェクト全体の解説(30分)
src/05_project/の構造- 実際のアプリケーション開発の流れ
- ハンズオン(60分)
- 機能追加の課題
- ペアプログラミング
- コードレビューと質疑応答(30分)
- コードを読むだけでなく、実際に書いて実行してみましょう
- エラーメッセージを恐れずに、いろいろ試してみましょう
- わからないことは積極的に質問しましょう
- gdbなどのデバッガの使い方も学ぶと効果的です
各サンプルコードには、コメントで練習問題が含まれています。 自分で実装してみて、理解を深めましょう。
# デバッグ情報付きでコンパイル
gcc -g -o bin/debug_app src/05_project/*.c -Wall -Wextra
# GDBで実行
gdb bin/debug_app
# GDB内で
(gdb) break main # ブレークポイントを設定
(gdb) run # 実行
(gdb) next # 次の行へ
(gdb) print variable # 変数の値を表示
(gdb) quit # 終了- GCCのバージョンを確認:
gcc --version - パスが正しいか確認
-Wall -Wextraで警告を確認
- Valgrindでメモリリークをチェック:
valgrind ./bin/app - セグメンテーションフォルトの場合はポインタの使い方を確認
バグ報告や改善提案は、Issueまたはプルリクエストでお願いします。
このプロジェクトはMITライセンスの下で公開されています。 学習目的であれば自由に使用・改変してください。
Happy Coding! 🎉