dポイントプレゼントキャンペーン実施中!

qsortの関数ポイントについて

int int_cmp(const int *a, const int *b)
{
------
}
main
{
qsort(x,nx,sizeof(int),(int (*) (const void *, const void * )) int_cmp);

上記の(1)関数のポイント,(int (*) (const void *, const void * )) int_cmpを
 普通の(2)関数ポイント(* int_cmp) (const void *, const void * )で呼べない
 理由 、また、(1)(2)は、同じ意味でしょうか、教えて頂きたい。

A 回答 (2件)

とりあえず、「ポイント」ではなく「ポインタ」です。


point -> pointer

以前のお礼より引用:
>回答ありがとうございます。皆さんの回答のおかげで戻り値(int (*)
>,引数(const void *, const vois *)の型でキャストしていることが
>解りました。

どうにもこの理解が怪しいです。
もしかして戻り値と引数をそれぞれキャストしていると思っていませんか?

いいですか、前回の回答でしつこく説明されていたとおり、
「int (*)(const void *, const void *)」
がqsortの第4引数の関数ポインタ型です。
関数int_cmpの関数ポインタ型は
「int (*)(const int *, const int *)」
なので、これをキャストします。

Cのキャスト式は

(型名)式

と定められていますので、

(int (*)(const void *, const void *))int_cmp

は明白です。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。キャストしについてわかりました。

お礼日時:2009/06/02 04:48

http://oshiete1.goo.ne.jp/qa4932995.html
では何がダメなの?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

お礼日時:2009/06/02 04:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!