在c中按函数填充typedef结构
我想按函数填充在c中按函数填充typedef结构,c,struct,malloc,typedef,dynamic-memory-allocation,C,Struct,Malloc,Typedef,Dynamic Memory Allocation,我想按函数填充typedefstruct。我试过: typedef struct{ char *first_name, *last_name; int id; Date birthday; } Person; void ReadPerson(Person* person){ person = (Person*)malloc(sizeof(Person)); person->first_name = readString(); person-
typedef
struct。我试过:
typedef struct{
char *first_name, *last_name;
int id;
Date birthday;
} Person;
void ReadPerson(Person* person){
person = (Person*)malloc(sizeof(Person));
person->first_name = readString();
person->last_name = readString();
scanf("%d",&(person->id));
ReadDate(&(person->birthday));
}
主要功能:
void main(){
Person *tmp = NULL;
ReadPerson(tmp);
}
在使用错误的Ptr值调用
ReadPerson
tmp
之后。如果在定义同一代码段中的变量时将其malloc,可能会更加优雅。如果要定义“Person*tmp”将信息存储在main()中,那么也可以在main()中使用malloc。删除ReadPerson()上的malloc。为什么在ReadPerson()中对malloc()
进行第二次调用?毫无意义,为什么要“mallocing”两次?问题也可能出在readString()
中。请提供一个最小的、完整的、可验证的示例。不理解您的问题,尤其是“调用ReadPerson
tmp
后,Ptr值不正确。”部分-嗯,这可能是的重复。您在函数中分配给person
的本地副本;这并没有改变main()
中的指针。您需要返回分配的结构(不需要参数),或者需要传递指向函数指针的指针。