C言語の鬼門?ポインタについて

ものすごいDisられかたをしている記事(現在進行形)

builder記事「C/C++のポインタの機能」の内容にコメントがプチ炎上

を発見し

「なんか、おれもやばいかも」

と思ったので、ここにウェブログります。

>ポインタ変数に値を代入し、それを出力する例を示す
 ポインタ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で参照できる(する)わけです。


なんでだろ?


誰か説明してもらえませんか?