I 다음 샘플 코드가 있습니다역 참조 포인터 때 구조체 포인터의 접근 회원
main.c를
#include "person.h"
struct person {
char* name;
int age;
};
Person* makePerson(char* n, int i) {
Person person;
person.name = n;
person.age = i;
return &person;
}
person.c
typedef struct person Person;
Person* makePerson(char* n, int i);
person.h을
나는 오전 Person 포인터에 해당하는 이름과 나이 멤버를 인쇄하려고 할 때 "불완전 유형에 대한 포인터 역 참조"오류가 발생했습니다.
gcc-std = c99 -o main main.c person 컴파일하는 .c
누구든지 나에게 약간의 지침을 줄 수 있습니까? 감사합니다
네,'main.c'에서'name'과'age'에 접근하려고 합니다만, 정의가'person.c'에 있기 때문에 아무것도 모릅니다. 구조체 정의를 헤더 파일로 옮겨야합니다. –
로컬 변수 포인터를 호출자에게 반환하지 않습니다. return & person; –
참고 makePerson에서 malloc을 사용하고 포인터를 반환해야합니다. 이와 같은 지역 변수를 선언 한 경우 makePerson 함수 호출이 끝날 때 포인터가 메모리를 가리키게됩니다. 구조 태그 및 유형 이름을 정의한 경우 – marcadian