0

わかりました、オンラインなどを見てこれを機能させましたが、1行目と2行目が正確に何をしているのか、なぜそれらが必要なのかを誰かが説明できますか

int structCompare(const void *a, const void *b)
{
     struct trade *tempA = (struct trade *)a;//(1)
     struct trade *tempB = (struct trade *)b;//(2)
     return strcmp(tempA->name, tempB->name);
}
4

1 に答える 1

3

これらの行は、汎用voidポインターをstruct tradeポインターにキャストします。明示的なキャストは、C ではvoid *不要であり、含まれている場合は削除する必要があります。

 struct trade *tempA = a;
 struct trade *tempB = b;
 return strcmp(tempA->name, tempB->name);

あなたは書くことができた:

return strcmp(((struct trade *)a)->name, ((struct trade *)b)->name);

私は最初のものを好みます。

于 2012-05-25T19:44:08.887 に答える