0

講義ファイルでこのコードを見つけました。比較関数と配列を取得し、BUBBLE SORTでソートする汎用関数です

typedef Relation (*CmpFunction)(void*, void*);
void sort(void **array, int n, CmpFunction compare){ 
   int i, j;
   void*  tmp;
   assert(array !=NULL && compare != NULL);
   for(i=0; i<n; i++) {
      for(j=i+1; j<n; j++) {
         if(compare(arr[i], arr[j])==Left) {
            tmp = array[i];
            array[i] = array[j];
            array[j] = tmp;
          }
       }
    }
}

関係は:ENUM型(面白くない)。私の質問は、なぜ sort() get

空所**、

なぜだろう

空所*

. PS 講義の筆者はわざとそうしましたが、私にはわかりません。

4

1 に答える 1

0

これは一般的なソートではなく、 の配列のソーターですvoid *

したがって、arrayis はvoid **、「ポインタへのポインタ」を意味しますvoid *。一度逆参照することができarray[0]、最初void *にソートされます。もちろん、それをサポートしていないため、逆参照することはできません。void *

ところで、標準ライブラリのqsort()はジェネリック ソートのより良い例です。

于 2013-07-01T13:26:41.617 に答える