このソースの意味を教えてください
構造体を使ったリストを理解するためのソースで
http://www9.plala.or.jp/sgwr-t/c/sec15-5.html
のページに以下の関数が書いてありました。
自分はreturn p;とするのが自然であって、head = p;の意味が分かりません。それが不要な処理であるように思えます。
return head;としているのでその前にhead = p;は必要な処理ですが、無駄であって意味が無いように見えましたが、そのように書くのが自然なのでしょうか?
head = p;の右に書いてあるコメントもおかしいと思うのですが、皆さんにはそのページのソースのその部分はコメントも含めて不自然さを感じないでしょうか?
/*** リストにデータを登録 ***/
struct list *add_list(int key, char *name, struct list *head)
{
struct list *p;
/* 記憶領域の確保 */
if ((p = (struct list *) malloc(sizeof(struct list))) == NULL) {
printf("malloc error\n");
exit(EXIT_FAILURE);
}
/* リストにデータを登録 */
p->key = key;
strcpy(p->name, name);
/* ポインタのつなぎ換え */
p->next = head; /* 今までの先頭ポインタを次ポインタに */
head = p; /* 新たな領域を先頭ポインタに */
return head;
}
補足
説明不足ですみません。 チャットでそう発言した人がいたから 質問しました。