0
inline int cmp (const void *a, const void *b)
{
  int aa = *(int *)a;
  int bb = *(int *)b;
  return (aa < bb) ? -1 : (aa > bb) ? 1 : 0;
}

これはかなり単純な関数で、a が b より小さい場合は -1、等しい場合は 0、a が b より大きい場合は 1 を返します。

のプロパティはconst void *何ですか? 私が理解したように、 はへのポインタに*(int *)aキャストしてその内容を取得し、変更してはならないメモリを指し、変更可能なメモリを指しますが、 を指すとはどういう意味ですか? たとえば、を指すようなものではありません。私ははっきりしているとは思わない。を指すという概念がわかりません。手伝ってくれますか?aintconst void *void *voidintvoid

4

4 に答える 4

0

void *a

void *b

関数をジェネリックにするために使用されるジェネリック ポインターです。つまり、任意のデータ型を操作できます。

このようなプロトタイプは、qsort

int (*compar)(const void*,const void*)カスタムコンパレータとして

ただし、実際の while 比較の定義では、事前にデータ型を知る必要があります。

あなたの場合のように、それらはタイプですint

于 2013-09-05T15:06:07.250 に答える
0

void ポインターは、任意の型のポインターに型キャストできます。または、void ポインターは、それが指す型を知らずに単にメモリ位置を指すだけです。

于 2013-09-05T15:07:28.443 に答える