C/C++ ポインタの分かりにくさに混乱しる
@mohhie ごめん、間違えた。*bというのを宣言して、領域を確保する前に代入してない?b=&a;したあとで、*b=a;とすれば、通ると思うよ。未確認だけど。
2010-02-17 13:48:03int* aという宣言は、アドレス型という意味で考えると &int a が正しいと思うんだが、パース出きなかったのかな。それとも int *aと考えて、実態はintのaと捉える方がいいんだろうか。
2010-02-17 13:53:09ただ、キャストで(int*)とかするから、やっぱりパース出きなかったので後ろに置きました、後ろに置いたので意味逆にしました、ゴメンナサイ。と捉えるのが良いんだろう。
2010-02-17 13:54:31ざっくりと。宣言時の*は、ポインタがただよという宣言。その他の部分では、ポインタの示す中身。&は、変数のアドレスという理解でよかったのか、記憶があいまいになってきた。だれか、詳しい人教えて。
2010-02-17 14:00:42@mohhie @kawa1128 携帯から説明するのは辛いので、誰もこの後Reply しなかったら、今夜あたり説明放送しよかなと。
2010-02-17 14:13:17. @kawa1128 @mohhie char型の配列sがあるとして、「s」は配列の先頭の要素のアドレス(つまり「&s[0]」)を指すので、その理論だと「char& a=s;」「char& b=&s[0];」は通ると思います。宣言時は普通に「char s[10];」でおkかと
2010-02-17 14:27:55その理論だと「char a;」「char b[10];」のような変数があったとすると、「char& s[10];」 だと、 「s[0] = &a;」「s[1] = b;」「s[2] = &b[0];」のようなパターンが通ると思います
2010-02-17 14:30:30. @yreeen @kawa1128 @mohhie その理論の「char& s[10];」って従来の「char *s[10];」と同じじゃないんですか?
2010-02-17 14:44:24&char s[10]の間違いです。@mohhie は結局宣言時の*の使い方がおかしいだろとういう指摘に対して、s[10]っていう宣言も意味から考えれば、おかしいだろうというのが、自分の論点。
2010-02-17 14:46:46あ、なるほど・・理解。 RT @kawa1128: &char s[10]の間違いです。@mohhie は結局宣言時の*の使い方がおかしいだろとういう指摘に対して、s[10]っていう宣言も意味から考えれば、おかしいだろうというのが、自分の論点。
2010-02-17 14:47:50配列について。キャストする時にどう書くのかをかんがえると(char[])がベストかと。char* s[10]は何を宣言してるのか意味不明。&char[] s = &char[10]のシンタックスシュガーと考えると、&char[] s[10]になるけど、そんな糖衣はいらん。
2010-02-17 16:00:03