コース一覧
C言語基礎 ポインタ・構造体・ファイル
完成と次のステップ

C言語基礎 ポインタ・構造体・ファイル

C言語のポインタ、構造体、ファイル操作を学び、データを扱う基礎を固めるコースです。

1
ポインタの入口
0. アドレスとは15分
1. ポインタの&と*15分
2. scanfの&の正体15分
3. 関数で値を書き換える15分
4. 配列を関数に渡す15分
5. つくる 入力処理の関数化15分
6. 第7章クイズ10分
2
構造体とファイル
0. 構造体15分
1. メンバの読み書き15分
2. 構造体配列15分
3. 構造体と関数15分
4. ファイルに書き込む15分
5. ファイルを読み込む15分
6. ファイルの失敗に備える15分
7. つくる 保存機能15分
8. 第8章クイズ10分
3
総合制作
0. メニュー統合15分
1. 自由拡張15分
2. 完成と次のステップ10分

C言語基礎 ポインタ・構造体・ファイル

01アドレスとは
02ポインタの&と*
03scanfの&の正体
04関数で値を書き換える
05配列を関数に渡す
06つくる 入力処理の関数化
07第7章クイズ
08構造体
09メンバの読み書き
10構造体配列
11構造体と関数
12ファイルに書き込む
13ファイルを読み込む
14ファイルの失敗に備える
15つくる 保存機能
16第8章クイズ
17メニュー統合
18自由拡張
19完成と次のステップ

C言語基礎 ポインタ・構造体・ファイル

完成と次のステップ

66 レッスンで手に入れたもの

おつかれさまでした。第1章では printf を 1 行書いて動かすだけだったものが、いまは番号でメニューを選び、複数の学生を構造体配列で持ち、集計してファイルに保存できるところまで来ました。途中で足したものを並べると、変数と型、書式指定、分岐、ループ、関数、配列、文字列、ポインタ、構造体、ファイル入出力です。C の入門書で扱われる基本文法は、これでひととおり通っています。

大事なのは、機能を 1 つずつ足しながら 1 本のプログラムを育てた、という経験のほうです。文法を個別に覚えても、どこで使うかが分からなければ動くものは作れません。逆にこのやり方を知っていれば、次の言語でも同じ順序で自分を進められます。

C言語中級で扱うこと

このコースでは、ポインタを「宣言する、* で中身を読む、関数に渡して書き換える」ところまでに絞りました。ここから先は C言語中級 の範囲です。

ひとつは ポインタ演算 です。p + 1 がバイト数ではなく型 1 個分ぶん進む、という C 独特の規則で、配列とポインタが本当は同じものだったと分かる場面です。

ふたつめは 動的メモリ確保 です。malloc と free を使うと、実行中に必要な分だけメモリを借りられます。今回のプログラムは学生を最大 10 人までに固定しましたが、malloc を使えば人数を入力してから確保でき、この制限がなくなります。借りたら返すという責任が生まれるので、返し忘れの メモリリーク や、返したあとに使う ダングリングポインタ の話もここで出てきます。

みっつめは 連結リスト です。ポインタでデータどうしをつないで並べる構造で、途中への挿入や削除が配列より速くなります。木構造やハッシュ表といったデータ構造の入口でもあります。

基本情報技術者試験の科目B につながる

C の文法を通したことは、資格の勉強にもそのまま効きます。基本情報技術者試験の科目B は、擬似言語で書かれた 20 問前後のプログラムを読んで、変数の中身や出力を答える問題が中心です。使われるのは代入、分岐、繰り返し、配列、関数呼び出しという、このコースで書いてきたものばかりです。

読解問題で強いのは、実際に手を動かして書いた経験がある人です。ループを 1 回ずつ追って変数の値を紙に書き出す作業は、第4章で九九や FizzBuzz を書いたときにやったことと同じです。科目B にはトレース、つまり処理を 1 行ずつ追う力が要りますが、それはコンパイルエラーやバグを自分で直してきた過程で育っています。

次にどこへ進むか

進む先はおおよそ 3 つに分かれます。C をさらに深くやってメモリとデータ構造に踏み込むなら C言語中級です。資格で成果を形にしたいなら基本情報技術者試験の対策へ進みます。作りたいものが先にあるなら、C で理解したメモリと型の感覚を持ったまま別の言語に移るのも良い選択です。どれを選んでも、今日完成させた成績管理CLI が土台になります。

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • 配列サイズ固定の同型データの集まり
  • 変数データに名前をつけて参照する仕組み
  • ループ繰り返し処理。矢印で戻すか専用記号で示す
  • 関数処理に名前を付けて再利用できる単位
  • 入出力input()はユーザーからの入力を文字列として受け取る関数。
  • メモリプログラムとデータを一時保持する高速領域
  • 連結リスト各要素が次の要素へのポインタを持つ構造。
  • リスト順序付きで複数の値を扱うデータ構造
生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/08/07

関連レッスン

  • 自由拡張

    欲しい機能を自分で設計して足せるようになります。

  • メニュー統合

    登録と一覧と集計と保存をメニュー式の1本にまとめられるようになります。

分からないところは Tap (AI先生) に質問できます

24 時間いつでも、あなたのレベルに合わせて日本語で答えます。