为什么在C结构定义中有嵌套指针?

时间:2016-04-22 08:37:11

标签: c function pointers struct syntax

我正在努力学习艰难的学习方式,并努力理解练习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;
}

我理解struct Person将一个指针(* person_create)返回到struct的开头。但是为什么有人第二个结构定义立即嵌套在里面?指向谁?

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

2 个答案:

答案 0 :(得分:5)

  

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

等等,这不是你的想法,或者至少你不这么说......

此处,person_create()函数,它返回指向struct Person的指针。这是 struct Person的定义。

现在,说到实际排队,struct Person *who 定义struct Person,而是定义变量who指向struct Person的指针。

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

答案 1 :(得分:1)

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

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