为什么 C 结构定义中有一个嵌套指针



我正在学习 C 艰难的方式,并且正在努力理解练习 16:结构和指向它们的指针中的某些内容。

struct Person *Person_create(char *name, int age, int height, int weight)
{
    struct Person *who = malloc(sizeof(struct Person));
    assert(who != NULL);
    who->name = strdup(name);
    who->age = age;
    who->height = height;
    who->weight = weight;
    return who;
}

我知道结构体 Person 返回指向结构开头的指针 (*person_create)。但是为什么有第二个结构定义立即嵌套在里面的人?指着*谁?

有人可以为我阐明这一点吗?或者指出我更好地解释 C 中的结构定义。

我知道struct Person返回一个指针(*person_create

等等,这不是你想的那样,或者至少你不是那样说的......

在这里,person_create()是一个函数,它返回一个指向 struct Person 的指针。这不是struct Person的定义。

现在,也就是说,回到您的实际问题,struct Person *who没有定义struct Person,而是定义了一个变量who,它是指向struct Person的指针。

为了便于理解,请考虑int someRandomVariable = 0 。它没有定义int,对吧?它定义了一个类型为 int 的变量someRandomVariable

函数返回一个类型为 struct Person * 的指针,换句话说,一个指向struct Person的指针。

特别是在这里,您将返回的指针名为 who ,您可以从声明struct Person * who = ...中理解。因此,您需要为变量 who 分配内存,您将填充该变量并返回指向的指针。

相关内容

最新更新