• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:プログラムのトレース)

プログラムのトレースについての質問

このQ&Aのポイント
  • プログラムのトレースの参考書を読んでいますが、自己参照構造体の利用例についてわからない箇所があります。
  • 特に、「作成した構造体wkdtpを既存のチェーンにはめ込んでいく」部分でつまづいています。
  • forループの始めでip=startを代入しているのですが、startの中身が構造体dmyであるため、ループが実行されずに抜けてしまいます。理解が間違っているのか、何か他の原因があるのか、詳しい解説をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

>その時点でforループの中の文を実行せずにループから抜けてしまうのではないでしょうか。 最初のデータを入力するときは、確かにそのforループをすっ飛ばします。 すっ飛ばした後、 ip->next = wkdtp; wkdtp->next = NULL; を実行するので、nextポインタには適切な値が入るはずです。 まあ、コードをつぶさに検討したわけではないので、 書いたことが間違っているおそれはありますけれど。

utu-ne
質問者

お礼

 ありがとうございます。少し分かった気になりました。もう少し考えてみます。

その他の回答 (1)

  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.1

>構造体dmyすなわち、{"", 0, NULL} は、 /* 構造体1個分のメモリを確保する */ /* 確保した構造体に名前と年齢を設定する */ /* 作成した構造体wkdtpを既存のチェーンにはめ込んでいく */ /* 最高齢だったらチェーンの最後につなぐ */ 処(ソースコードは省略)で書き換わってるでしょ?

utu-ne
質問者

補足

 済みません、まだ分かりません。ip=startのstartは、最初の{"",0,NULL}の先頭アドレスが保持されているのではないでしょうか。どこで書き換わったのでしょう、自分でももう少し考えますが、もしよろしければ、ご教示願います。

関連するQ&A