私はC言語では新しく、すべてのポインタの問題にいくつかの問題があります。typedef structポインタ定義
私はこのコードを書いた:
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
と最後の1: 私は追加している場合:
typedef struct edge_list
{
EDGE *head;
}EDGE_LIST;
をされますそれと同じ:
typedefの後ろに '*'を隠すことは、一般的には悪いスタイルです。それは混乱につながるだけです。プログラマは*事をpThingよりも速く読みます。同じことが '#define AND &&'などの他の構文要素にも当てはまります。つまり、しないでください。 – wildplasser