新しく質問する

基本情報技術者検定の平成13年度秋期午後問題について

役に立った:0件
  • 質問者:yuyakiyo
  • 投稿日時:2005/10/02 00:10
  • 困り度:すぐに回答が欲しいです
  • 友達に紹介
  • ブログに書く
  • 教えて!gooお気に入り

http://www.rs.kagu.tus.ac.jp/infoserv/j-siken/H1 …
この問題のポインタの使いかたについて疑問があるのでお願いします。

まず、12,13行目からmlstr=mlstrのアドレスとして扱っています。そして15行目でmlstr = parse_ml_data(mlstr + 1, 1);関数を呼び出し


そして16行目のchar *parse_ml_data(char *mlstr, int level)関数でmlstrのポインタとして受け取っています。
よって、この関数内では12,13行目で使われているmlstrのポインタを表すので、mlstr=mlstrの値を表すのではないかと思うのですが、22行目などからアドレスで扱っているようになっています。

ポインタについていまいち自信がもてないので、よろしければどこか間違って解釈いるところがれば、教えてください。お願いします。

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:0件)
  • 参考になった:0件

No.1ベストアンサー20pt

結論からいうと、parse_ml_data関数内の「mlstr」はポインタで、「*mlstr」はポインタの中身だよ。

parse_ml_string関数内に書かれている
mlstr = parse_ml_data(mlstr + 1, 1);
の第一引数「mlstr + 1」はparse_ml_data関数の宣言文
char *parse_ml_data(char *mlstr, int level)
の第一引数にあたるわけなんですけど、第一引数は「*mlstr」ではなく、「mlstr」なのです。

だからこの関数の宣言文を
char *parse_ml_data(char* mlstr, int level)
っていう風に書くとわかりやすいんですよね。


私もここでよく悩みました。
しかし文章のみで説明するというのは難しいです。
質問と回答があってますでしょうか?

通報する

  
このQ&Aは役に立ちましたか?(役に立った:0件)

このページのトップへ

Facebook公式ページ

公式Twitter