Я новичок в C и имею некоторые проблемы со всем, что связано с указателями.
Я написал такой код:
typedef struct edgeitem
{
double weight;
}EDGE_ITEM, *pEDGE_ITEM; //also declaration of a pointer
/************ edge that includes a pointer to the edge item, next and prev ******/
typedef struct edge
{
pEDGE_ITEM *edge_item;
pEDGE *next; //pointer to next edge
pEDGE *prev; //pointer to prev edge
}EDGE, *pEDGE;
Таким образом я получаю сообщение об ошибке и просто не могу понять, почему.
Я знаю, что edgeitem
и edge
являются тегами, и я могу использовать struct edge *next
, но я объявил указатели, поэтому почему я не могу их использовать их?
Нужно ли использовать *, если у меня есть указатель?
pEDGE_ITEM *edge_item
//or
pEDGE_ITEM edge_item
Я не могу понять, это указатель, так зачем мне добавлять *?
И последний вопрос: Если я использую вышеизложенное, в чем разница между:
*EDGE next
EDGE *next
и последним: если я добавляю:
typedef struct edge_list
{
EDGE *head;
}EDGE_LIST;
это то же самое, что:
pEDGE head;