struct Person型のデータをリンクリストに渡しているので、各ノードのデータポインタがstruct Personを指しています。私はリストを横断し、トラバースのためのプロトタイプ void *からstructへのキャスト
traverse(&list, &print);
を呼び出すことによって、各ノードでの名前/テキストを印刷しようとしています
struct Person {
char name[16];
char text[24];
};
は次のとおりです。
:void traverseList(struct List *list, void (*f)(void *));
一覧は以下のように定義されます
struct List {
struct Node *head;
};
My p rint関数はvoid *を受け取ります。data:
print(void *data) { .... }
私はstruct Personにデータをキャストしなければならないのは分かりますか?
struct Person *person = (struct Person *)data;
printf("%s", person->name);
私は、「初期化互換性のないポインタ型から」警告を取得していますので、これは十分ではありません知っています。この場合、どのようにしてvoid *をキャストできますか?ありがとうございました。
「トラバース」のプロトタイプとは何ですか?そして、どのタイプが 'list'ですか? –
あなたはトラバースするためにリストをどのように渡しているのか、実際にプリントをどのように使っているのかをチェックしたいかもしれません。あなたが見せてくれたすべてが一致するようです。 – unxnut
@ ValeriAtamaniouk私はそれらを含めるように私の質問を編集しました。 – user1889966