将结构内的元素与 C 中的空指针值进行比较

Compare element inside a struct with a void pointer value in C

我需要创建一个接收结构指针和空指针的函数,它 return 1 如果元素在结构上。

typedef struct {
    char *sx;
    int val, code, qtty;
    char abc [20];
} ST_DAT;

int compare (ST_DAT *, void *);

这是比较双链表中节点的程序的一部分,但此函数用作:

int (*pfun)(ST_DAT *, void *));

问题是我不知道如何将 void * 与其他值进行比较,直到我找到或找不到里面的值。

int compare (ST_DAT *stData, void *key)
{
    if (key == (*stData).val || key == (*stData).code || key == (*stData).qtty || strcmp (key,(*stData).abc) || strcmp (key,(*stData).sx) )
    {
       return 1;
    }else{
       return 0;
    }
 }

这是正确的吗?

(*stData).valint 类型,因此您需要将 key 转换为 int * 然后像这样取消引用:

*(int *)key == (*stData).val

您必须根据要比较的数据对 key 进行类型转换。在 int.

的情况下,您必须确保比较指针的值而不是指针本身
  if (*(int*)key) == (*stData).val || *(int *)key == (*stData).code || (int *)*key == (*stData).qtty || strcmp((char *)key,(*stData).abc) || strcmp ((char *)key,(*stData).sx) )