2013-03-16 3 views
1

Существует функция, что я должен использовать это выглядит следующим образом:Неуверенный о том, какой тип данных использовать здесь

void pushNode (struct onode** head, struct onode* node) ; 

Я пытался использовать это:

struct onode *head = NULL; 
head=malloc(sizeof(struct onode)); 

struct onode *tempO; 

pushNode(*head,tempO); 

На что я эта ошибка в терминале:

expected ‘struct onode **’ but argument is of type ‘struct onode’ 

Я не уверен, что ставить вместо *head. Любой свет, который вы могли бы пролить на это, будет высоко оценен.

Спасибо

ответ

5

При использовании:

pushNode(*head, tempO); 

It разыменовываетhead, превращая struct onode * в struct onode.
Вы хотите принять его адрес, что может быть сказано, чтобы быть противоположностью разыменования:

pushNode(&head, tempO); 

Принимая его адрес будет делать его из struct onode * в struct onode **.

+0

+1 хорошее объяснение –

+0

Спасибо! Указатели на практике очень запутывают меня. –

1

Попробуйте поставить вместо pushNode(&head,tempO);

В адрес указателя, который является указателем на указатель, то есть struct node **.

Смежные вопросы