определение указателя структуры typedef

Я новичок в 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;
6
задан betabandido 26 May 2012 в 21:21
поделиться