はじめての親子ハイキングに挑戦!! >>

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に関連する最新のQ&A

A 回答 (1件)

結論からいうと、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)
っていう風に書くとわかりやすいんですよね。


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

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング