C言語なら俺に聞け(入門篇) Part 8at TECHC言語なら俺に聞け(入門篇) Part 8 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト468:デフォルトの名無しさん 07/02/28 02:26:54 >>466 「美味しい」じゃなくて「惜しい」だね。 469:466 07/02/28 02:30:30 >>467 ??? >>468 お恥ずかしいです 470:デフォルトの名無しさん 07/02/28 02:33:53 >>469 例えば、answer が 10 だとすると、 「惜しい!」ってぇのは何と何だ? 471:デフォルトの名無しさん 07/02/28 02:37:59 >>465 >>>int compare(const void *a, const void *b){ >の const void *bに入れる値はmainの中の何処にあるのでしょうか? qsort関数の最後の引数としてcompare関数の名前(関数ポインタ)を渡している。 これはqsort関数が配列の要素を比較するときに使う関数。 qsort関数では、aとbに並べ替え対象の配列の要素のいずれかを入れて、渡され た関数を何度も呼び出す。 >>>*((int *)a); >は何なのでしょうか?ダブルでポインタのマークがありますが・・・・ int x = *((int*)a)を分けて書くと、 int* a_int = (int*)a; int x = *a_int; qsortは、さまざまな型のデータを並べ替えることが出来なければならないの で、比較関数を呼ぶ際には、比較対象の2データを指すポインタを汎用のvoid* 型で渡すように作られている。 受け取った側ではintの値として比較したいので、まずvoid*型のポインタを int*型にキャストし、*で値を取り出している。 bsearchも同じような形で比較用の関数を何度も呼ぶ。 >クイックソートのcompare >>qsort(nums, 10, sizeof(int), compare); >は、const void *a,を指すのでしょうか? >検索のcompare >>p = (int *) bsearch(&a, nums, 10, sizeof(int), compare); >は、const void *b,を指すのでしょうか? 意味が分かりません。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch