struct person 형식의 데이터를 연결된 목록에 전달하므로 각 노드의 데이터 포인터가 struct Person을 가리 킵니다.void *에서 struct로 캐스팅
struct Person {
char name[16];
char text[24];
};
나는 목록을 통과 트래버스에 대한
traverse(&list, &print);
프로토 타입을 호출하여 각 노드의 이름/텍스트를 인쇄하려고은 다음과 같습니다
void traverseList(struct List *list, void (*f)(void *));
목록은 다음과 같이 정의된다 :
struct List {
struct Node *head;
};
내 페이지 rint 함수는 무효를 받아들입니다. * data :
print(void *data) { .... }
저는 구조체 Person에 데이터를 캐스트해야합니다. 맞습니까?
struct Person *person = (struct Person *)data;
printf("%s", person->name);
"호환되지 않는 포인터 유형에서 초기화"경고가 있기 때문에 충분하지 않습니다. 이 경우 void *를 성공적으로 캐스팅 할 수 있습니까? 고맙습니다.
'traverse'의 프로토 타입은 무엇입니까? 그리고 어떤 타입이'list'입니까? –
트래버스 할 목록을 전달하는 방법과 실제로 인쇄를 사용하는 방법을 확인할 수 있습니다. 네가 보여준 모든것이 일치하는 것 같다. – unxnut
@ValeriAtamaniouk 질문을 편집하여 질문을 포함 시켰습니다. – user1889966