<分区>
我有以下结构:
struct PList{
Person value;
PList* next;
}
和
struct Person{
char name[100];
PersonID ID;
float amountOwed;
}
和
struct PersonID{
int number;
char letter;
}
在主要方法中:
Person n;
// n is inputted from the user
addPersonToList(&n, &customers); //customers is a PList
这是 addPersonToList 的代码:
void addPersonToList(Person* p, PList* pdb) {
PList* db;
db = pdb;
while (db->next != NULL ) {
db = db->next;
}
PList a;
a = createNewPList(); // this simply assigns next to NULL and value to an empty Person
a.value = *p;
memcpy(db->next,&a,sizeof(PList)+sizeof(Person)+sizeof(PersonID));
}
这里是createNewPList
PList createNewPList() {
PList a;
a.next = NULL;
a.value = constructPerson("", constructPersonID(' ', 0), 0);
return a;
}
问题 1未解决 当调用 addPersonToList 方法时,除了 p->Id.number 之外,Person 中的所有值都被正确传递。这完全混淆了方法调用之前和方法调用之后。
问题 2 已解决 我也尝试了 db->next = a; 而不是 memcpy以及手动分配所有值。 但是在那一行程序崩溃了,我假设是因为 db->next 当前为 NULL
至于错误,没有显示错误。程序直接崩溃了。
感谢任何解决方案