这来自以下网页: http://c.learncodethehardway.org/book/ex16.html
....deleted code
struct Person {
char *name;
int age;
int height;
int weight;
};
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;
}
[Rest of code not shown]
我无法理解语句" struct Person * who = malloc(sizeof(struct Person));
此语句位于struct Person * Person_create函数内。那么究竟什么是struct Person *谁在做什么?
答案 0 :(得分:0)
与其他语言不同,除非struct
struct
,否则每次都必须在typedef
前加struct
个关键字。因此struct Person *who
只是声明一个名为who struct Person
的指针。
答案 1 :(得分:0)
malloc(sizeof(struct Person))根据struct'Pers'的大小分配一个内存块,并将指向新内存块开头的指针返回给* who。
答案 2 :(得分:0)
'谁'只是类型struct person的临时指针,指向内存块。 因此malloc(sizeof(struct Person)创建该块并将其地址分配给' who'。 现在要访问该块中的每个元素,who-> name将是指向该块的name元素的指针,依此类推。 指针' who'最后返回同一块的任何进一步操作。