- C/C++の宿題片付けます 168代目
450 :デフォルトの名無しさん[sage]:2015/02/28(土) 19:54:14.87 ID:9679fv1E - 質問があります。
下記の構文は正しいんでしょうか? 1行目はわかりますが、2行目はさっぱり意味がわかりません。 **ppcはchar型なのに、=&pc ではアドレスであることに なってしまうんじゃないでしょうか? char *pc = "abcdefg"; char **ppc = &pc; 出典「ポインタが理解できない理由」p166 よろしくお願いします。
|
- C/C++の宿題片付けます 168代目
452 :450[sage]:2015/02/28(土) 20:11:59.56 ID:9679fv1E - >>451
ありがとうございます。自分でもう少し勉強します。(^^;)
|
- C/C++の宿題片付けます 168代目
454 :450[sage]:2015/02/28(土) 20:30:09.62 ID:9679fv1E - >>453
ありがとうございます。でも、うううう・・・難解です。修行してきます。
|
- C/C++の宿題片付けます 168代目
455 :450[sage]:2015/02/28(土) 21:09:05.43 ID:9679fv1E - 質問です。
>>450の場合、下記は正しいですか? char *pc = "abcdefg"; について pcには文字列へのアドレスが格納(指し示す)されている。 その指定された文字列の場所(つまり*pc)に "abcdefg"が格納される。 char **ppc = &pc;について ppcは、文字列へのアドレスが格納された場所のアドレスを格納するポインタである。 ppcに格納されたアドレスは、pcのアドレスである。 つまり、ppcと&pcは等しい。 以上のとおりなら、2行目は下記のように理解していいですか? char **ppc; ppc = &pc; もし以上のとおりだとすると、1行目と2行目の”=”の意味が違うような気がしますが・・・
|
- C/C++の宿題片付けます 168代目
457 :450[sage]:2015/02/28(土) 21:29:00.92 ID:9679fv1E - >>456
int i=100; の場合、iで指定された場所に100が入ります。 int *k=100; の場合、kはポインタなのでアドレスです。kに指し示されたアドレスの場所に 数字100が格納されています。k=100ではありませんね。 同様に、 char *pc = "abcdefg"; の場合も同じです。 pcはポインタなのでアドレスです。pcに指し示されたアドレスの場所に 文字列"abcdefg"が格納されています。pc="abcdefg"ではありませんね。 ところが、・・・ char **ppc = &pc; の場合、 ppc = &pc となるっていうことですね・・・・??!! **ppc = &pcとなるべきではないか、と思うのですが・・・ 熟練された方にとって当たり前なら、それはきっと正しいのでしょうけど、 うまく頭が整理できず困っております・・・・。
|
- C/C++の宿題片付けます 168代目
466 :450[sage]:2015/02/28(土) 22:16:19.11 ID:9679fv1E - みなさんありがとうございます。
>>460 情報感謝 >>462 なるほど、確かに混乱していました。 >>463 ありがとうございます。 >>465 マジレス、本当ですか?
|
- C/C++の宿題片付けます 168代目
467 :450[sage]:2015/02/28(土) 23:43:49.86 ID:9679fv1E - 学生のとき、「ポインタって、配列と同じだな!」って知ったかぶりして
言ってた友達がいたけど、あれは間違っていたな。今頃になってよくわかってきました。
|