我正在努力学习艰难的学习方式,并努力理解练习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中更好地解释结构定义。
答案 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
分配内存,并返回指针。