Week 2: ポインタと配列¶
日程概要¶
- Day 1: ポインタの基礎
- Day 2: ポインタと配列の関係
- Day 3: 多次元配列とポインタ配列
- Day 4: 文字列処理と動的メモリ割り当て
- Day 5: 実践演習とポインタを使用した高度な技法
Day 1: ポインタの基礎¶
1.1 ポインタの概念¶
- メモリアドレスとは
- 変数のアドレスを取得する方法(&演算子)
- ポインタ変数の宣言と初期化
1.2 ポインタの操作¶
- 間接参照演算子(*)の使用
- ポインタの演算(インクリメント、デクリメント)
- NULL ポインタの概念と安全性
1.3 ポインタと関数¶
- 値渡しと参照渡しの違い
- ポインタを使用した関数パラメータ
演習¶
- 2つの整数値を交換する関数の実装(ポインタを使用)
- ポインタを使用して配列の要素を逆順にする関数の実装
- NULL ポインタのチェックを含む安全なメモリアクセスの練習
Day 2: ポインタと配列の関係¶
2.1 配列とポインタの類似性¶
- 配列名がポインタとして機能する仕組み
- 配列要素へのアクセス(添字表記 vs ポインタ演算)
2.2 ポインタ演算と配列インデックス¶
- ポインタのインクリメント/デクリメントと配列要素の関係
- ポインタを使用した配列の走査
2.3 関数パラメータとしての配列¶
- 配列を関数に渡す方法
- ポインタを使用した配列パラメータの宣言
演習¶
- ポインタを使用して配列の合計を計算する関数の実装
- 配列の要素を逆順にする関数の実装(ポインタのみを使用)
- 二分探索アルゴリズムの実装(ポインタを活用)
Day 3: 多次元配列とポインタ配列¶
3.1 多次元配列の概念¶
- 2次元配列の宣言と初期化
- 多次元配列のメモリレイアウト
3.2 多次元配列とポインタ¶
- 多次元配列の要素へのアクセス(ポインタ表記)
- 多次元配列を関数に渡す方法
3.3 ポインタの配列¶
- ポインタ配列の宣言と使用
- 文字列の配列(char*の配列)
演習¶
- 2次元配列を使用した行列の加算プログラムの実装
- ポインタを使用して2次元配列の転置を行う関数の実装
- 文字列の配列をソートするプログラムの作成
Day 4: 文字列処理と動的メモリ割り当て¶
4.1 文字列の基本¶
- C言語における文字列の表現(null終端文字列)
- 文字列リテラルとchar配列
4.2 文字列操作関数¶
- strcpy, strcat, strlen, strcmp の使用方法
- 安全な文字列操作関数(strncpy, strncat)
4.3 動的メモリ割り当て¶
- malloc, calloc, realloc, free 関数の使用方法
- メモリリークの防止
演習¶
- 文字列を逆順にする関数の実装(ポインタを使用)
- 動的に割り当てられた文字列の配列を作成し、ソートするプログラムの実装
- 簡単な文字列処理ライブラリの作成(独自の strcat, strcpy 関数など)
Day 5: 実践演習とポインタを使用した高度な技法¶
5.1 関数ポインタ¶
- 関数ポインタの宣言と使用
- コールバック関数の概念
5.2 ポインタを使用したデータ構造¶
- 単方向リンクドリストの実装
- 二分木の基本実装
5.3 ポインタのポインタ¶
- 多重間接参照の概念
- ポインタのポインタを使用したメモリ割り当て
5.4 実践演習:テキストエディタの基本機能実装¶
- 動的メモリ割り当てを使用した行の挿入と削除
- ポインタを活用したテキスト操作
演習¶
- qsort 関数を使用した汎用ソートプログラムの実装
- 単方向リンクドリストを使用した簡単な電話帳プログラムの作成
- ポインタのポインタを使用した2次元配列の動的割り当てプログラム
まとめ¶
- ポインタと配列の深い関係の理解
- 多次元配列とポインタ配列の活用方法の習得
- 動的メモリ割り当てとメモリ管理の重要性
- 高度なポインタ技法の基礎的な理解と応用
次週の予告¶
Week 3では、メモリ管理についてより深く学び、スタックとヒープの概念、効率的なメモリ使用方法、そしてメモリリークの防止技術について探求します。