私はLearn C The Hard Wayを通して働いており、練習16:ストラクチャとポインタを理解するのに苦労しています。Cの構造体定義の中にネストされたポインタがあるのはなぜですか?
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にすぐにネストされた2番目の構造体定義はなぜ存在しますか? *誰を指しているの?
誰かが私のためにこれについていくつかの光を当てることができます。またはC.
'struct Person'の定義がありません(しかし推測できます) –
いいえ。 'Person_create'関数は' Person'へのポインタを返します。 'who'変数は、関数が返す値を保持します。メモリを割り当て、メモリがある場所のコピーを保存します。最後に、割り当てられたメモリの場所を返す前に、この構造体のさまざまなフィールドを設定します。この場合は、 'Person'の開始位置になります。 (あなたは継続的にそれらをつかまえます):) - ポインタは本のページ番号と大まかに類推します - どこに何があるかを教えます。 。 – enhzflep