【发布时间】:2016-04-22 08:37:10
【问题描述】:
我正在学习 Learn C The Hard Way,并且正在努力理解练习 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)。但是为什么有第二个结构定义 Person 立即嵌套在里面呢?指向*谁?
有人可以帮我解释一下吗?或者指出我对 C 中结构定义的更好解释。
【问题讨论】:
-
我们缺少(但可以猜到)
struct Person的定义 -
不。
Person_create函数返回一个指向Person的指针。who变量保存函数返回的值。您分配内存,并保存内存所在位置的副本。然后在最终返回已分配内存的位置之前设置此结构的各个字段,在本例中为Person的开头。 (您可以通过继续使用掌握它们):) - 指针与书中的页码有一个粗略的类比 - 它们告诉您在哪里可以找到某些东西,并具有告诉(通过指针的类型)会出现什么的额外优势.
标签: c function pointers struct syntax