他の言語からCへの初心者であり、 http://c.learncodethehardway.org/book/learn-c-the-hard-way.htmlから学習しています。
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;
}
2 番目の Person_create 関数が struct Person のポインターを返すことを理解しています。私はそれを理解していません(他の言語、erlang、rubyから来た可能性があります)、なぜそれを次のように定義するのですか
struct Person *Person_create(char *name, int age, int height, int weight)
いいえ
struct Person Person_create(char *name, int age, int height, int weight)
構造体を返す関数を定義する他の方法はありますか?
この質問が基本的すぎる場合は申し訳ありません。