C言語なら俺に聞け(入門篇) Part 8
at TECH
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドの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,を指すのでしょうか? 意味が分かりません。
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
5386日前に更新/130 KB
担当:undef