1

リンクされたリストがあり、残りの構造を構築している間に各ノードに対処するのに役立つ一時的な配列を作成しようとしています。その後、配列を解放するつもりですが、のアドレスを保存できないようです構造体をポインタ配列に。

ここに私が問題を抱えている場所の煮詰めたバージョンがあります:

vertex *vertexIndex = NULL;
vertex *vertexHead = NULL;
vertexHead = malloc(sizeof(vertex));
vertexHead->vertexNum = 5;
vertexIndex = malloc(sizeof(vertex*));
vertexIndex[0] = vertexHead;            //<<<<<<<<<<<  Error on this line
printf("%u\n", (vertexHead[0])->vertexNum);

main.c:72:19: エラー: タイプ 'vertex' からタイプ 'struct vertex *' に代入するときのタイプに互換性がありません</p>

どんな助けでも大歓迎です。

編集

ここに構造体があります

struct edgeStruct {
    unsigned int edgeTo;
struct edgeStruct *nextEdge;
};
typedef struct edgeStruct edge;

struct vertexStruct {
    unsigned int vertexNum;
    edge *edgeHead; 
    struct vertexStruct *nextVertex;
};
typedef struct vertexStruct vertex;
4

3 に答える 3

1

vertexIndexポインターの配列として使用しているため、ポインターへのポインターである必要があります。

vertex **vertexIndex = NULL;
于 2012-09-14T18:28:53.887 に答える
1

vertexIndex構造体の配列ではありません。これは単なる構造体ポインターであるため、エラーが発生します。

配列が必要な場合は、配列を宣言します:頂点

vertex *vertexHead[10]; //array of 10 pointers

これで、今と同じように使用できるようになります。

于 2012-09-14T18:29:07.063 に答える
1

エラーメッセージが示すように、その行で、ポインターのコンテンツをポインターに割り当てようとしています。vertexHeadどちらが vertex *に割り当てられます*vertexIndex(どちらと同等でvertexIndex[0]あり、互換性がありません。

の定義のコードを投稿してvertex、人々が何をすべきかを提案できるようにすることをお勧めします。

于 2012-09-14T18:29:53.967 に答える