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

プログラムのトレースに関する初歩的な疑問

このQ&Aのポイント
  • プログラムのトレースに関して初歩的な疑問があります。
  • 具体的には、自己参照構造体の利用に関してのプログラムでの処理が理解できません。
  • 特に、構造体のチェーンにおけるforループの処理について分からない部分があります。

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

  • ベストアンサー
  • neko1963
  • ベストアンサー率49% (127/258)
回答No.3

while(1) のループ1周目の時は確かに /* 作成した構造体wkdtpを既存のチェーンにはめ込んでいく */ の "for(ip=start; ip->next != NULL; ip = ip->next){" のループ中の文は実行されませんね。while(1) のループ1周目の時は、このforループの中の文は実行されなくて問題無いですよ。 プログラムロジックの要所要所にデバッグ用のprintあるいはfprint等を入れて構造体に入っている値を実際に見てみるとわかりやすいと思います。 ※デバッガがあれば、プログラム中にデバッグ用のprintあるいはfprint等を入れなくても済みますが。

utu-ne
質問者

お礼

 ありがとうございます。大分分かってきました。startの中身が{"", 0, NULL}でも、そのあとで(forループを抜けてから)wkdtpがip->nextに代入されて、次にforループが実行されるための継続条件ip->next != NULLは満たされるんですね。 >プログラムロジックの要所要所にデバッグ用のprintあるいはfprint等を入れて これをやってみて、実際の動きがよく分かりました。

utu-ne
質問者

補足

 ありがとうございます。大分分かってきました。startの中身が{"", 0, NULL}でも、そのあとで(forループを抜けてから)wkdtpがip->nextに代入されて、次にforループが実行されるための継続条件ip->next != NULLは満たされるんですね。 >プログラムロジックの要所要所にデバッグ用のprintあるいはfprint等を入れて これをやってみて、実際の動きがよく分かりました。

その他の回答 (2)

回答No.2

whileの1周目の動作としては正しいかと思います。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

その for のあとにあるものは無視?

関連するQ&A