C言語の鬼門?ポインタについて
ものすごいDisられかたをしている記事(現在進行形)
を発見し
「なんか、おれもやばいかも」
と思ったので、ここにウェブログります。
>ポインタ変数に値を代入し、それを出力する例を示す
ポインタnはどこを指しているのでしょうか?
すでに指摘されていますが、筆者の方はポインタを理解されていないと思います。
「参照渡し」も実際にはポインタを値で渡しているのですし、&を使って変数をポインタ変数に変えたりできるのではありません。
どうも、当初の記事では。
int *n;
と宣言されたポインタ変数について
> プログラム内で用いる値は*nでを示しているのだが、nが示しているのは、
> その値を記憶させるメモリ上のアドレスだ。それ自体は自動的に設定されるため、
> 開発者が具体的なアドレスを設定する必要はない。
という無茶な見解を記事にしていたらしい。
しまいにゃ
すでに指摘されていますが、筆者の方はポインタを理解されていないと思います。
「参照渡し」も実際にはポインタを値で渡しているのですし、&を使って変数をポインタ変数に変えたりできるのではありません。
ん〜...この20年で、最低最悪のポインタの説明だ...
そして、誰か、この編集者に「人選を誤った」って教えてあげて下さい。
もうボッコボコです
僕なら立ち直れないっす
タイトルも
「C/C++のポインタの機能--参照渡し」
↓
「C/C++のポインタの機能--参照渡しのような処理」
↓
「C/C++のポインタの機能--変数の場所(アドレス)」
と変わっていく始末
すごく臨場感ある記事に仕上がっております
そこは、まぁ置いておいて
ここからが僕のためのウェブログ
int main() {
int i;
int *po;
po = &i;
*po = 10;
printf("i=%d *po=%d", i, *po);
}
このソースをコンパイルして実行すると
i=10 *po=10
こうなります
このソースのint型変数(とポインタ)をcharにした場合
int main() {
char c[2];
char *po;
po = &c;
strcpy(po,"10");
printf("c=%s po=%s", c, po);
}
で
c=10 *po=10
となる(はず)です
何が言いたいかといいますと
int型ポインタは*poとするとアドレスの中身を参照することになりますが、char型ポインタはpoで参照できる(する)わけです。
なんでだろ?
誰か説明してもらえませんか?