1

そのため、Cでダブルポインターを使用/逆参照するのに問題があります。構造体または共用体ではないメンバー*のエラーメッセージリクエストが表示されます。今、私は同様の質問で多くの投稿を見ましたが、解決策は実行して機能(*head)head = &tempません。誰か助けてくれませんか?

vertex_t **create_graph(int argc, char *argv[]) {
   vertex_t **head, *temp;

   temp = malloc(sizeof(vertex_t));

   head = head->temp;
   head->name = argv[1];

   head->next = malloc(sizeof(vertex_t));
   head->next->name = argv[2];
   head->next->next = 0;

   head->adj_list = malloc(sizeof(adj_vertex_t));
   head->adj_list->edge_weight = atoi(argv[3]);
   head->adj_list->vertex = head->next;

   head->next->adj_list = malloc(sizeof(adj_vertex_t));
   head->next->adj_list->edge_weight = atoi(argv[3]);
   head->adj_list->vertex = head;

   return head;
}
4

2 に答える 2

3

そこにあるものはすべて、を使用する必要があると言っていますvertex_t *head

また、head = head->temp;まだ割り当てていないため、クラッシュしますhead

于 2012-09-25T06:09:56.660 に答える
-1

これはあなたの要件を満たしていますか?

vertex_t **create_graph(int argc, char *argv[]) {
vertex_t *head, **temp;

head = malloc(sizeof(vertex_t));
temp = malloc(sizeof(vertex_t*));
*temp = head;

head->name = argv[1];

head->next = malloc(sizeof(vertex_t));
head->next->name = argv[2];
head->next->next = 0;

head->adj_list = malloc(sizeof(adj_vertex_t));
head->adj_list->edge_weight = atoi(argv[3]);
head->adj_list->vertex = head->next;

head->next->adj_list = malloc(sizeof(adj_vertex_t));
head->next->adj_list->edge_weight = atoi(argv[3]);
head->adj_list->vertex = head;

 return temp;
}
于 2012-09-25T07:21:45.590 に答える