struct声明中的struct关键字

时间:2014-11-25 19:34:22

标签: c struct

这来自以下网页: 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 *谁在做什么?

3 个答案:

答案 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'最后返回同一块的任何进一步操作。