【发布时间】:2017-06-14 04:06:41
【问题描述】:
我想按函数填充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);
}
在使用 Bad Ptr 值调用 ReadPerson tmp 之后。
【问题讨论】:
-
为什么在
ReadPerson()内(第二次)调用malloc()? -
没有意义,你为什么要“mallocing”两次?
-
问题也可能出在
readString()。请提供一个最小、完整且可验证的示例。 -
不理解您的问题——尤其是“在使用错误的 Ptr 值调用
ReadPersontmp之后。”部分——好吧,这可能是 C Programming: malloc() inside another function - Stack Overflow 的副本。 -
你在函数中分配给
person的本地副本;这并没有改变main()中的指针。您要么需要返回分配的结构(并且参数是不必要的),要么需要将指针传递给指向函数的指针。
标签: c struct malloc typedef dynamic-memory-allocation