Definieren Sie eine Funktion, die einen Strukturzeiger zurückgibt

Bitte tragen Sie mit mir, ich bin von anderer Sprache und Neuling zu c und lerne es vonhttp://c.learncodethehardway.org/book/learn-c-the-hard-way.html

<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;
}
</code>

Ich verstehe, dass die zweite Person_create-Funktion einen Zeiger von struct Person zurückgibt. Ich verstehe nicht ist (kann sein, weil ich aus einer anderen Sprache bin, Erlang, Ruby), warum definiert es es als

<code>struct Person *Person_create(char *name, int age, int height, int weight)
</code>

nicht

<code>struct Person Person_create(char *name, int age, int height, int weight)
</code>

Und gibt es eine andere Möglichkeit, eine Funktion zum Zurückgeben einer Struktur zu definieren?

Entschuldigung, wenn diese Frage zu einfach ist.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage