Ну, код, как он есть, даже не компилируется, так как тип pqElement
никогда не определялся, а была определена только структура _pqElement
.
Также вы используете %d
вprintf
, но передаваемый вами параметр - void**
, поэтому вам нужно привести значение.
Эти изменения должны помочь:
#include <stdio.h>
#include <stdlib.h>
typedef struct _pqElement{
void** data;
void** priority;
} pqElement;
pqElement* pqElement_new(void* data, void* priority){
static pqElement* result;
result = (pqElement*) malloc (sizeof(pqElement));
result->data=&data;
result->priority=&priority;
return result;
}
int* new_int(int value){
static int *elem;
elem = (int*)malloc(sizeof(int));
*elem=value;
return elem;
}
int main(int argc, char const *argv[]){
pqElement *element = pqElement_new(new_int(1), new_int(85));
printf("%d-%d\n", **((int**)(element->data)), **((int**)(element->priority)));
//need to free the memory allocated with the malloc, otherwise there is a possibility of memory leakage!
}
Это будет печатать толькопервый элемент, но вы можете указать на следующие элементы, используя смещение.
ПРИМЕЧАНИЕ. Как я уже сообщал в коде, вам необходимо освободить память, выделенную с помощью malloc, иначе у вас есть потенциалутечка памяти!