当函数有void*参数时,如何在函数中传递参数?

Lea*_*arn 1 c queue data-structures

我必须在一个实现入队操作queue.在节点结构中,datatypefor dataPtrvoid*.这是我的代码,但在调用此函数时,如何传递参数?

typedef struct node
{
void* dataptr;
 struct node* next;
 } QUEUE_NODE;

typedef struct
{
    QUEUE_NODE* front;
    QUEUE_NODE* rear;
    int count;
}QUEUE;

//createqueue
QUEUE* createQueue(void)
{
    QUEUE* queue;
    queue = (QUEUE*)malloc(sizeof(QUEUE));
    if (queue)
    {
        queue->front = NULL;
        queue->rear = NULL;
        queue->count = 0;
    }
    return queue;
}
//Enqueue
bool enqueue(QUEUE* queue, void* itemptr)
{
    QUEUE_NODE* newptr;
    if (!(newptr = (QUEUE_NODE*)malloc(sizeof(QUEUE_NODE))))
        return false;
    newptr->dataptr = itemptr;
    newptr->next = NULL;
    if (queue->count == 0)
        queue->front = newptr;
    else
        queue->rear->next = newptr;
    (queue->count)++;
    queue->rear = newptr;
    printf("inserted value is%d\n", newptr->dataptr);
    return true;
}
Run Code Online (Sandbox Code Playgroud)

Pau*_*vie 5

void *队列的指针意味着它可以存储(指向)任何类型的数据; 队列不关心你存储在它里面的东西.

因此,只需使用指向数据类型的指针即可调用enqeue函数.应该没有必要把它投射到(void *).