C言語レクチャー H108097 H108102 H108137 H108139 成瀬基樹 濱口賢人 山崎貴英 山下佳隆 1 今回の内容 関数ポインタ qsort 2 関数ポインタとは? 関数のアドレスを保有するポインタ 変数のように使用できる 3 関数ポインタの構造 宣言 代入 (返却値の型) (*変数名)(引数…) 変数名=関数名 使用方法 (*変数名)(引数…) 4 実際の使い方 lect3_fncptr.cを開く 5 関数ポインタのメリット 複数の関数を配列で管理できる 動的な関数の呼び出しができる etc… 6 メリットの例 lect3_fncptr2.cを開く 7 qsortとは? C言語標準のソート関数 配列をソートできる 8 宣言 void qsort(void *base, size_t n, size_t size, int(*fnc)(const void*, const void*)) 9 第一引数 void qsort( void *base, size_t n, size_t size, int(*fnc)(const void*,const void*)) ソート対象になる配列のポインタ 基本型、構造体どちらでも良い 10 第二引数 void qsort( void *base, size_t n, size_t size, int(*fnc)(const void*,const void*)) 配列に格納されている要素の個数 添字0から添字nまでがソートされる 11 第三引数 void qsort( void *base, size_t n, size_t size, int(*fnc)(const void*,const void*)) 配列の要素一つ一つの大きさ intならsizeof(int)で得られる 12 第四引数 void qsort( void *base, size_t n, size_t size, int(*fnc)(const void*,const void*)) 比較関数の関数ポインタ 13 比較関数 qsortの第四引数における関数ポイン タで渡すべき比較の基準となる関数 返却値は整数 引数はキャストして用いる 14 比較関数の引数と返却値 比較関数の引数は配列の2つの要素 返却値はこの2要素の関係により決定 第1引数を後に持ってきたいなら正値 第1引数を前に持ってきたいなら負値 15 実際の使い方 lect_qsort.cを開く 16 構造体における比較関数 lect_qsort2.cを開く 17 課題1 関数ポインタを用いた電卓を作成せよ 条件 四則演算と余りの導出 四則演算と余りの計算は関数化する 引数として2つの数値 計算結果を返却する 18 課題2-A qsortを用いて前々回の成績管理ソフトを 改良せよ 条件 GPAでソートできるように 19 課題2-B 条件 GPAが同じだった場合、学籍番号でソートする こと ユーザに名前、学籍番号、GPAのどれかで ソートするか選択させること 20 課題3 課題2の内容をさらに改良せよ 条件 ソートを昇順、降順のどちらでもできるように ユーザに昇順、降順のどちらかを選択させる 昇順、降順の比較関数は関数ポインタで管理 する 21 ラシゼミ恒例課題 これまで習った内容をフル活用して オリジナルプログラムを作成せよ 条件 ポインタを用いる 構造体を用いる 努力目標 データ保存用ファイルを用意し、 前回の記録を復元できるようにする 22 アドバイス コードを書くとき、一番最初にコメント でどこで何をするかを記述する 頭の中で何を書くか整理できる 23
© Copyright 2024 ExpyDoc