我在C中很新,并且遇到了所有指针的问题。typedef结构体指针定义
我写了这个代码:
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;
在typedef后面隐藏一个'*'通常是一种糟糕的风格。这只会导致混乱。程序员阅读*比pThing更快。其他语法元素也是如此,例如'#define AND &&'等等。总之:不要这样做。 – wildplasser