アカウント名:
パスワード:
p = &n; // pにnのポインタを代入
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー
CとC++ (スコア:1)
単に
int n; // 整数型変数nを定義
int *p; // 整数ポインタ型変数pを定義
n = 5; // nに5を代入
p = &n; // pにnのポインタを代入
*p = 10; // pがポイントする変数に10を代入
見たいに書けば間違いも起こりにくくわかりやすい気がするんですけど。
Re: (スコア:1)
あくまでも私の経験上の話です。
ここを
「pにnのポインタを代入」
と説明した人は、たいていポインタを正しく理解していませんでした。
一方、ここを
「pにnのアドレスを代入」
と説明した人は、全員ポインタを正しく理解できていました。
また、前者のポインタを代入と説明した人の中には
アドレスであることをふまえてあえて前者の「ポインタを代入」と説明する人がいました。
しかし、その人は値渡し/参照渡しの違いを正しく説明できませんでした。
Re: (スコア:1)
私の理解では、アドレスはポインタですけど、ポインタはアドレスじゃないです。
特定のアドレッシングルールに左右される「アドレス」という概念を、ポインタの説明に使わないほうがいい、と思っています。
概念としてのポインタは、アドレスのような特定の型の数値ではなく、アドレス空間変換メソッドを備えたクラスなんじゃないでしょうか。
ただ最初からその説明では、解説に手間がかかりすぎますよね。だから簡単な概念を示し、その説明を端的に行うこと、誤解を生まない工夫などが重要だと思った次第です。
私が言いたかったのは、最初の理解のためには宣言文と初期化代入文をいっしょにしないほうがいい、ということだけです。
ヌルポ対策やクラスとしてのポインタの理解は、次の段階でやればいいんじゃないでしょうか。
Re:CとC++ (スコア:0)
>特定のアドレッシングルールに左右される「アドレス」という概念を、ポインタの説明に使わないほうがいい、と思っています。
ポインタ自体がアドレッシングルールに左右されますから。
(nearポインタとか保護モードとか)
やはりポインタはアドレスそのものです。
というかアドレッシングルールを理解せずに使うと危ないし・・・