我有一个带有指针的方法,我想根据输入将它放在另一个指针中。
这是一个过度简化的版本:
struct people
{
char sName[20];
int nAge;
};
void printDetails(struct people person)
{
printf("Name: %s\nAge: %d\n", person.sName, person.nAge);
}
void changeAge(struct people *person1, struct people *person2, int nNewAge, int nPerson)
{
/// I know that this is wrong. I don't know how to implement this. This is my best try.
struct people *personToBeModified;
if (nPerson == 1)
*personToBeModified = *&(*person1);
else if (nPerson == 2)
*personToBeModified = *&(*person2);
(*personToBeModified).nAge = nNewAge;
}
void main()
{
struct people person1 = {"Yeet", 18};
struct people person2 = {"Yeetboii", 18};
changeAge(&person1, &person2, 20, 2);
printDetails(person1);
printDetails(person2);
}
Run Code Online (Sandbox Code Playgroud)
我想要在changeAge 中发生的是能够将一个人对象(一个参数)放入函数内部定义的一个人对象中并能够修改它。
谢谢您的帮助。
你不能*personToBeModified在你做的时候分配,因为personToBeModified还没有指向任何地方。此外,当它们&紧接在前面时,*它们相互抵消,因此*&(*person1)与*person1
分配给一个指针就像分配给其他任何东西。在这里,您只需将相应人员的地址分配给personToBeModified:
if (nPerson == 1)
personToBeModified = person1;
else if (nPerson == 2)
personToBeModified = person2;
Run Code Online (Sandbox Code Playgroud)