C 如何将指针赋值给一个指针

yee*_*boi 1 c pointers

我有一个带有指针的方法,我想根据输入将它放在另一个指针中。

这是一个过度简化的版本:

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 中发生的是能够将一个人对象(一个参数)放入函数内部定义的一个人对象中并能够修改它。

谢谢您的帮助。

dbu*_*ush 6

你不能*personToBeModified在你做的时候分配,因为personToBeModified还没有指向任何地方。此外,当它们&紧接在前面时,*它们相互抵消,因此*&(*person1)*person1

分配给一个指针就像分配给其他任何东西。在这里,您只需将相应人员的地址分配给personToBeModified

if (nPerson == 1)
    personToBeModified = person1;
else if (nPerson == 2)
    personToBeModified = person2;
Run Code Online (Sandbox Code Playgroud)