• ベストアンサー

ポインタについて…

 大文字を小文字に変えるプログラムで以下のようなソースがあるんですが、 main() [ char str[10],*p; gets(str); p = str; while(*p){ *p = toupper(*p); p++; } }  この、whileの条件の、(*p)の意味が分からないんですが(^^;; きっと簡単な事なんだと思うんですが、分かる方、是非教えてくださいm(_ _)m

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

  • ベストアンサー
  • cherry3
  • ベストアンサー率39% (18/46)
回答No.1

whileの条件の(*p)と特定していることから ポインタ変数に*をつけたときの動作はわかっているようなので、 while(*p)の説明のみします。 strという変数にはgetsで取得した文字列が入っています。 文字列というのは文字の終わりを判断するのにNULL文字('\0')が入っています。 NULL文字というのは、大抵のコンパイラでは(0)なので 何か文字があればwhile(*p)は真になりそのままループの中に入ります。 文字列の終端(NULL文字)になったら偽になるのでループを抜けます。

denpanounabara
質問者

お礼

ありがとうございました(^^;; やっぱりあっけなかったですね~、解決法。

関連するQ&A