我有一个函数,该函数获取一个指向人员列表的指针,还有两个包含两个人在该列表中的位置的整数。
int relation(Person **p_list, int p1, int p2)
{
printf("At Übergabe: %s\n", (*p_list + p1)->name_); //Prints name person1
printf("At Übergabe: %s\n", (*p_list + p2)->name_); //Prints name person2
int relative;
Person **Person1;
Person **Person2;
Person1 = (p_list + p1);
Person2 = (p_list + p2);
printf("Post Übergabe: %s\n", (*Person1)->name_); //Prints name person2
printf("Post Übergabe: %s\n", (*Person2)->name_); //memory error
return PLZ_WORK;
}
而且我不明白...如果两者都会产生内存错误,我会明白...但是我不明白为什么第一个人现在是第二个人,而第二个人侵犯了我的记忆...
编辑:
typedef struct _Person_
{
char name_[MAX_NAME];
char sex_;
}Person;
最佳答案
如所写,Person1和Person2毫无区别地指向内存。您很可能会因为p1的值而感到幸运,并且指针最终指向(通过内存放置方式的偶然机会)指向另一个名称。 p2的另一个值将指针的值压入您不允许访问的内存区域。